Vue: μ‚¬μš©μž 지정 μ§€μ‹œλ¬Έ 바인딩은 ꡬ성 μš”μ†Œμ™€ μš”μ†Œμ—μ„œ λ‹€λ¦…λ‹ˆλ‹€.

에 λ§Œλ“  2019λ…„ 04μ›” 15일  Β·  6μ½”λ©˜νŠΈ  Β·  좜처: vuejs/vue

버전

2.6.10

볡제 링크

https://jsfiddle.net/bponomarenko/uom10qd2/

μž¬ν˜„ 단계

  1. λΈŒλΌμš°μ € μ½˜μ†”μ„ μ—½λ‹ˆ λ‹€.
  2. ν† κΈ€ λ²„νŠΌμ„ 두 번 ν΄λ¦­ν•©λ‹ˆλ‹€.

무엇을 κΈ°λŒ€ν•©λ‹ˆκΉŒ?

DirectiveλŠ” DOM μš”μ†Œμ™€ ꡬ성 μš”μ†Œμ— 적용될 λ•Œ λ™μΌν•œ μ½˜μ†” λ©”μ‹œμ§€λ₯Ό λ‚΄ λ³΄λƒ…λ‹ˆλ‹€ (μ΄ˆκΈ°ν™”μ‹œ 및 λ²„νŠΌ 클릭 ν›„).

μ˜ˆμƒλ˜λŠ” 좜λ ₯이 무엇인지 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. μ–΄λŠ ν•œ μͺ½

bind: first comp
bind: first elem
unbind: first comp
unbind: first elem
bind: first comp
bind: first elem

λ˜λŠ”

bind: first comp
bind: first elem
unbind: second comp
unbind: second elem
bind: first comp
bind: first elem

μ‹€μ œλ‘œ 무슨 일이 μΌμ–΄λ‚˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

μ§€μ‹œλ¬Έμ˜ λ©”μ‹œμ§€λŠ” initμ—μ„œ λ™μΌν•˜μ§€λ§Œ λ²„νŠΌμ„ 클릭 ν•œ ν›„μ—λŠ” λ‹€λ¦…λ‹ˆλ‹€.

μ‹€μ œ μ½˜μ†” 좜λ ₯ :

bind: first comp
bind: first elem
unbind: first comp
unbind: second elem
bind: second comp
bind: first elem

DOM μš”μ†Œμ™€ ꡬ성 μš”μ†Œμ— μ§€μ‹œλ¬Έμ΄ μ μš©λ˜λŠ” μˆœμ„œκ°€ λ‹€λ₯Έ 것 κ°™μŠ΅λ‹ˆλ‹€. λ‚΄ μ„€μ •μ—λŠ” ꡬ성 λ°μ΄ν„°κ°€μžˆλŠ” 일뢀 DOM 속성에 μ˜μ‘΄ν•˜λŠ” μ‚¬μš©μž 지정 μ§€μ‹œλ¬Έμ΄ μžˆμŠ΅λ‹ˆλ‹€. 이 μ‚¬μš©μž 지정 μ§€μ‹œλ¬Έμ΄ "일반 흐름"μ—μ„œ 바인딩 / 바인딩 ν•΄μ œλ˜λ©΄ λͺ¨λ“  것이 μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€ (μš”μ†Œ 속성이 μ—…λ°μ΄νŠΈ 된 ν›„ μ§€μ‹œλ¬Έ 바인딩). κ·ΈλŸ¬λ‚˜ Vue "in-place patch strategey"의 경우 μ§€μ‹œλ¬Έμ΄ 바인딩 / 바인딩 ν•΄μ œλ˜λ©΄ λ™μž‘μ΄ λ‹€λ₯΄κ²Œ λ³΄μž…λ‹ˆλ‹€.

bug has workaround

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ§€μ‹œλ¬Έμ΄ (μž¬μ‚¬μš©λ˜κΈ° λ•Œλ¬Έμ—) 이전 ꡬ성 μš”μ†Œμ™€ ν•¨κ»˜ ν˜ΈμΆœλ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄μ§€λ§Œ μ—¬μ „νžˆ 였래된 속성이 μžˆμŠ΅λ‹ˆλ‹€.

ν•΄κ²° λ°©λ²•μœΌλ‘œ ꡬ성 μš”μ†Œ 쀑 ν•˜λ‚˜μ— ν‚€λ₯Ό μ„€μ •ν•˜μ‹­μ‹œμ˜€.

λͺ¨λ“  6 λŒ“κΈ€

μ§€μ‹œλ¬Έμ΄ (μž¬μ‚¬μš©λ˜κΈ° λ•Œλ¬Έμ—) 이전 ꡬ성 μš”μ†Œμ™€ ν•¨κ»˜ ν˜ΈμΆœλ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄μ§€λ§Œ μ—¬μ „νžˆ 였래된 속성이 μžˆμŠ΅λ‹ˆλ‹€.

ν•΄κ²° λ°©λ²•μœΌλ‘œ ꡬ성 μš”μ†Œ 쀑 ν•˜λ‚˜μ— ν‚€λ₯Ό μ„€μ •ν•˜μ‹­μ‹œμ˜€.

μ•ˆλ…•ν•˜μ„Έμš”.
@posvaκ°€ λ§ν•œ λ‚΄μš©μ€ 이미 λ¬Έμ„œμ— ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
이것을 μ°Έμ‘° ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

https://vuejs.org/v2/guide/conditional.html#Controlling -Reusable-Elements-with-key

@posva @pistis λ‹΅λ³€ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. 예, 그것이 μš°λ¦¬κ°€ κ²°κ΅­ ν•΄κ²° λ°©λ²•μœΌλ‘œ μ‚¬μš©ν•œ κ²ƒμž…λ‹ˆλ‹€. ν‹°μΌ“μ—μ„œ μ–ΈκΈ‰ν•΄μ•Όν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ key 속성이 있으면 Vue.js λ Œλ”λ§ μ΅œμ ν™”λ₯Ό μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 그것을 고치면 쒋을 κ²ƒμž…λ‹ˆλ‹€.

μ΅œμ ν™”λŠ” stateless μš”μ†Œκ°€ μžˆλ‹€λŠ” 것을 κΈ°λ°˜μœΌλ‘œν•˜λ―€λ‘œ VueλŠ” μš”μ†Œλ₯Ό μž¬μ‚¬μš©ν•˜λ €κ³  ν•  λ•Œ 이벀트 ν•Έλ“€λŸ¬ λ˜λŠ” 둜컬 μƒνƒœλ₯Ό μ˜¬λ°”λ₯΄κ²Œ κ΄€λ¦¬ν•˜λŠ” 데 μ‹ κ²½ 쓰지 μ•ŠμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μ €λŠ” 이것이 버그가 μ•„λ‹ˆλΌ μ‚¬μš©μžκ°€ 이것을 더 μ‰½κ²Œ 이해할 수 μžˆλ„λ‘ λ¬Έμ„œμ—μ„œ 잠재적으둜 κ°œμ„  될 수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

@Justineo μ €λŠ” μ΅œμ ν™” 자체의 κ°œλ…μ„ μ΄ν•΄ν•©λ‹ˆλ‹€. λ‚΄ μƒν™©μ—μ„œ μ‚¬μš©μž 지정 μ§€μ‹œλ¬Έμ€ bind μš”μ†Œμ— state 속성을 μΆ”κ°€ν•˜κ³  unbind ν•΄λ‹Ή 속성을 μ œκ±°ν•˜λŠ” μ—­ν• μ„ν•©λ‹ˆλ‹€. 그리고 Vue.jsμ—μ„œ μ»΄ν¬λ„ŒνŠΈλ₯Ό μž¬μ‚¬μš©ν•˜λ©΄ μ§€μ‹œλ¬Έμ΄ μ™„λ²½ν•˜κ²Œ μΆ”κ°€ / μ œκ±°λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ ꡬ성 μš”μ†Œ 속성 μ—…λ°μ΄νŠΈ 및 μ§€μ‹œλ¬Έ μ΄ˆκΈ°ν™”μ˜ μˆœμ„œλŠ” ꡬ성 μš”μ†Œ 수λͺ…μ˜ λ‹€λ₯Έ μˆœκ°„μ— λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— μ‚¬μš©μž 지정 μ§€μ‹œλ¬Έμ„ κ°œλ°œν•˜κΈ°κ°€ μ–΄λ ΅μŠ΅λ‹ˆλ‹€.
μ‹€μ œλ‘œ μ΄λŸ¬ν•œ μ΅œμ ν™” κΈ°μˆ μ— λŒ€ν•œ μΆ”κ°€ λ¬Έμ„œκ°€ 도움이 될 수 μžˆμ§€λ§Œ μΌκ΄€μ„±μ—†λŠ” μ§€μ‹œλ¬Έ 수λͺ…μ£ΌκΈ° μ΄λ²€νŠΈλŠ” 제 생각에 μˆ˜μ •ν•΄μ•Ό ν•  λ²„κ·Έμž…λ‹ˆλ‹€.

ν•΄κ²° λ°©λ²•μœΌλ‘œ ꡬ성 μš”μ†Œ 쀑 ν•˜λ‚˜μ— ν‚€λ₯Ό μ„€μ •ν•˜μ‹­μ‹œμ˜€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰