Vue2 的时代,知道 props、data、computed 是响应式的,但到了 Vue3 的 ref 和 reactive 则令人有些迷惑
import { computed, defineComponent, reactive, toRef } from 'vue'
export default defineComponent({
name: 'Child',
props: {
params: Object // 来自 Parent 的传值
},
setup(props) {
const refParams1 = toRef(props, 'params') // 保留响应性
const nameOfParams = computed(() => {
return refParams1.value.name.toUpperCase()
}) // 保留响应性
const reactiveParams1 = reactive(props.params) // 保留响应性
const reactiveParams2 = reactive(Object.assign({}, props.params)) // 响应性消失!!!
return {
refParams1 ,
nameOfParams ,
reactiveParams1,
reactiveParams2
}
}
})