Vue.jsμμλ μΌλ°μ μΌλ‘ λ°μ΄ν°λ₯Ό λ°μΈλ©νμ¬ DOM μμλ₯Ό μ μ΄ν©λλ€.
νμ§λ§ κ²½μ°μ λ°λΌμ, DOM μμλ μμ μ»΄ν¬λνΈμ μ§μ μ κ·Όν΄μΌ νλ μν©μ΄ λ°μν μ μμ΅λλ€.
μ΄λ Vue.jsμμ μ 곡νλ ref $refsλ₯Ό μ¬μ©νλ©΄ μνλ μμμ μ½κ² μ κ·Όν μ μμ΅λλ€.
β ref ?
refλ Vue ν νλ¦Ώ μμμ νΉμ DOM μμλ μμ μ»΄ν¬λνΈμ λν μ°Έμ‘°λ₯Ό μμ±νκΈ° μν μμ±μ λλ€. ref μμ±μ μ¬μ©νλ €λ©΄ ν νλ¦Ώμ ν΄λΉ μμλ μ»΄ν¬λνΈμ refλ₯Ό μΆκ°νκ³ , κ³ μ ν μ΄λ¦μ ν λΉν©λλ€. μ΄λ κ² νλ©΄ ν΄λΉ μμλ μ»΄ν¬λνΈμ λν μ°Έμ‘°κ° μμ±λλ©°, Vue μΈμ€ν΄μ€ λ΄μμ ν΄λΉ μ°Έμ‘°λ₯Ό μ¬μ©ν μ μκ² λ©λλ€.
β $refs ?
$refsλ Vue μ»΄ν¬λνΈμμ νΉμ DOM μμλ μμ μ»΄ν¬λνΈμ λν μ°Έμ‘°λ₯Ό μ μ₯νλ λ° μ¬μ©λ©λλ€. $refsλ₯Ό μ¬μ©νλ©΄ μ»΄ν¬λνΈμμ μ§μ μ μΌλ‘ DOM μμλ₯Ό μ‘°μνκ±°λ, μμ μ»΄ν¬λνΈμ λ©μλλ₯Ό νΈμΆνλ λ±μ μμ
μ μνν μ μμ΅λλ€.
π ref $refs μ¬μ© λ°©λ²
1. DOM μμλ μμ μ»΄ν¬λνΈμ ref μμ±μ μΆκ°ν©λλ€. μμ±κ°μ κ³ μ ν λ¬Έμμ΄λ‘ μ§μ ν΄μΌ ν©λλ€.
<input ref="inputElement" type="text" />
<child-component ref="childComponent"></child-component>
2. ν΄λΉ μ»΄ν¬λνΈ λ΄μμ this.$refs κ°μ²΄λ₯Ό μ¬μ©νμ¬ ν΄λΉ μμμ μ κ·Όν μ μμ΅λλ€.
mounted() {
// DOM μμμ μ κ·Ό
this.$refs.inputElement.focus();
// μμ μ»΄ν¬λνΈμ μ κ·Ό
this.$refs.childComponent.someMethod();
}
π₯² $refsμ λ¨μ
1. λ°μμ±μ΄ μμ
$refsλ Vue.jsμ λ°μμ± μμ€ν
μμ μ μΈλμ΄ μμ΅λλ€. μ¦, $refsλ₯Ό μ¬μ©νμ¬ μ°Έμ‘°λ₯Ό λ³κ²½ν΄λ Vue.jsλ μ΄λ₯Ό κ°μ§νμ§ λͺ»νλ©°, λ°λΌμ ν΄λΉ μ°Έμ‘°μ κ΄λ ¨λ κ³μ°μ΄λ λ λλ§ μ
λ°μ΄νΈκ° μ΄λ£¨μ΄μ§μ§ μμ΅λλ€.
μ΄λ¬ν μ΄μ λ‘ $refsλ₯Ό μ£Όλ‘ DOM μμμ μ§μ μ κ·Όνκ±°λ, μμ μ»΄ν¬λνΈμ μΌνμ±μΌλ‘ λ©μμ§λ₯Ό μ λ¬νλ λ° μ¬μ©νλ κ²μ΄ μ ν©ν©λλ€.
2. μ΄κΈ°ν μμ μ μ°Έμ‘°κ° μμ μ μμ
$refs μ°Έμ‘°λ μ»΄ν¬λνΈκ° λ§μ΄νΈλκ³ DOMμ΄ λ λλ§λ μ΄νμλ§ μ¬μ©ν μ μμ΅λλ€. λ°λΌμ μ»΄ν¬λνΈμ μμ± κ³Όμ μ€μλ $refsλ₯Ό μ¬μ©νμ¬ μ°Έμ‘°νλ €λ μμμ μ κ·Όν μ μμ΅λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄, μΌλ°μ μΌλ‘ mounted λΌμ΄νμ¬μ΄ν΄ ν
μμ $refsλ₯Ό μ¬μ©ν©λλ€.
3. κ³Όλν μ¬μ©μΌλ‘ μΈν μ½λ κ°λ
μ± μ ν
$refsλ₯Ό κ³Όλνκ² μ¬μ©νλ©΄ Vue.jsμ λ°μ΄ν° νλ¦κ³Ό κ΄λ ¨λ μ½λ κ°λ
μ±μ΄ μ νλ μ μμ΅λλ€. Vue.jsλ λ°μ΄ν° νλ¦μ λͺ
ννκ² νκΈ° μν΄ λ°μ΄ν° λ°μΈλ©μ μ¬μ©νλλ°, $refsλ₯Ό μ¬μ©νλ©΄ μ΄λ¬ν λ°μ΄ν° νλ¦μ΄ λΆλͺ
νν΄μ§ μ μμ΅λλ€. λ°λΌμ $refs μ¬μ©μ μ΅μννκ³ , νμν κ²½μ°μλ§ μ¬μ©νλ κ²μ΄ μ’μ΅λλ€.
β κ²°λ‘
Vue.jsμ $refsλ₯Ό μ¬μ©νλ©΄ DOM μμλ μμ μ»΄ν¬λνΈμ μ½κ² μ κ·Όν μ μμ§λ§, λ°μμ±μ΄ μκ³ μ΄κΈ°ν μμ μ μ°Έμ‘°κ° μμ μ μμΌλ©° μ½λ κ°λ μ±μ΄ μ νλ μ μμ΅λλ€. μ΄λ¬ν λ¨μ μ κ³ λ €νμ¬ $refsλ₯Ό μ μ νκ² μ¬μ©νλ©΄, Vue.jsμμ DOM μ‘°μ λ° μμ μ»΄ν¬λνΈμμ μνΈμμ©μ λ³΄λ€ ν¨μ¨μ μΌλ‘ μνν μ μμ΅λλ€.