Vueμ μ μΈμ λ λλ§ λͺ¨λΈμ λλΆλΆμ μ§μ μ μΈ DOMμ μμ μ λμ μννλ€. νμ§λ§ λλ‘ κΈ°λ³Έ DOMμμμ μ§μ μ κ·Όν΄μΌ νλ κ²½μ°κ° μμ μ μλ€. μ΄λ
refνΉμ μμ±μ μ¬μ©ν΄μ μ½κ² μ κ·Όν μ μλ€.
<input type="text" ref="input" />
refλ νΉμ μμ±μ΄λ€. μ΄ refνΉμ μμ±μ ν΅ν΄ λ§μ΄νΈλ DOM μμ λλ μμ μ»΄ν¬λνΈμ λν μ°Έμ‘°λ₯Ό μ»μ μ μλ€.
Composition APIλ‘ μ°Έμ‘°λ₯Ό μ»μΌλ €λ©΄ λμΌν μ΄λ¦μ μ°Έμ‘°λ₯Ό μ μΈν΄μΌ νλ€.
<template> μμμ inputμΌλ‘ Refs μ°Έμ‘°μ μ κ·Όνλ €λ κ²½μ° λ λλ§λκΈ° μ μλ μ°Έμ‘°κ° nullμΌ μ μλ€.<template> μμμ $refs λ΄μ₯ κ°μ²΄λ‘ Refs μ°Έμ‘°μ μ κ·Όν μ μλ€.v3.2.25 μ΄μμμ λμ
v-forλ΄λΆμμrefκ° μ¬μ©λ λrefλ λ§μ΄νΈ ν μμ λ°°μ΄λ‘ μ±μμ§λ€.
<script>
import { ref, onMounted } from 'vue'
export default {
setup() {
const list = ref([1, 2, 3]);
const itemRefs = ref([]);
onMounted(() => console.log(itemRefs.value))
return{ list, itemRefs }
}
}
</script>
refλ₯Ό μμ μ»΄ν¬λνΈμλ μ¬μ©ν μ μλ€.refλ‘ μμ μ»΄ν¬λνΈμ μ°Έμ‘°κ°μ μ»κ² λλ©΄ μμ μ»΄ν¬λνΈμ λͺ¨λ μμ±κ³Ό λ©μλμ λν μ 체λ₯Ό μ κ·Όν μ μλ€.
μ΄λ¬ν κ²½μ° λΆλͺ¨/μμ μ»΄ν¬λνΈκ° μμ‘΄λκ° μκΈ°κΈ° λλ¬Έμ μ΄λ¬ν λ°©λ²μ λ°λμ νμν κ²½μ°μλ§ μ¬μ©ν΄μΌ νλ€. κ·Έλ¦¬κ³ μΌλ°μ μΌλ‘refλ³΄λ€ νμ€ propsλ₯Ό μ¬μ©νμ¬ λΆλͺ¨/μμκ° μνΈμμ©μ ꡬνν΄μΌ νλ€.
child.vue
<template>
<div>Child Component</div>
</template>
<script>
import { ref } from `vue`;
export default {
setup() {
const message = ref('Hello Child!');
const sayHello = () => {
alert(message.value);
};
return { message, sayHello };
},
};
</script>
λΆλͺ¨ μ»΄ν¬λνΈμμ μμ μ»΄ν¬λνΈμ μνλ λ©μλμ μ κ·Όν μ μλ€.