반응형
setup() 함수의 인자
setup 함수는 props, context 두 가지 인자를 가집니다.
props
setup 내부의 props 는 반응성이 있고, 새로운 props 가 전달되면 업데이트 됩니다.
props 는 다음과 같이 사용할 수 있습니다.
export default {
props: {
name: String,
age : Number,
},
setup(props){
console.log(props.name);
}
}
props 는 반응성을 가지고 있지만 ES6의 구조분해할당을 사용하면 props 의 반응성이 사라지기 때문에 setup 함수의 toRefs 를 사용해 반응성을 유지해야합니다.
import { toRefs } from 'vue'
export default{
setup(props) {
const { name } = toRefs(props)
console.log(name.value)
}
}
context
context 는 attrs
, slots
, emit
3 가지의 컴포넌트 프로퍼티를 가집니다.
export default {
setup(context) {
console.log("attrs = "+context.attrs);
console.log("slots = "+context.slots);
console.log("emit = "+context.emit);
}
}
context 객체는 일반적인 JS 객체이기 때문에 반응성이 존재하지 않습니다. 그렇기에 ES6 구조분해할당을 바로 사용할 수 있습니다.
export default {
setup({attrs, slots, emit}) {
console.log("attrs = "+attrs);
console.log("slots = "+slots);
console.log("emit = "+emit);
}
}
attrs 와 slots 컴포넌트 자체가 업데이트 될 때, 항상 업데이트 되는 상태 저장 객체입니다. 대문에 attrs와 slots 에 구조분해할당을 피하고 속성을 attrs.value
, slots.value
의 형태로 참조해야 합니다.
또한, attrs 나 slots 의 변경으로 인한 사이드이펙트를 의도하려면, onUpdated
라이프사이클 훅 안에서 수행해야 합니다.
참고문서 : Vue3 공식문서
반응형
'Study > Vue' 카테고리의 다른 글
VueJS 3 ) <script setup> 과 setup() 의 차이 (0) | 2022.03.21 |
---|---|
VueJS 3 ) Composition API 를 기반으로 한 NewsWebApp (0) | 2022.03.21 |
VueJS 3 ) TodoApp 을 통한 OptionsAPI 와 Composition API 비교 (1) | 2022.03.20 |
Vuejs ) TodoApp (Vue2에서 Vue3으로) (0) | 2022.03.20 |
Chart.js ) Vue2 + Chart.js (0) | 2022.03.01 |
댓글