我們知道,子組件通過 prop
接收父組件的傳值,而且子組件也是禁止直接通過 prop
修改父組件的值。
但在 Vue3 中,這個限制似乎被 toRef
打破了。
假設父組件傳下面的對象給子組件
{
list: []
}
在 Vue3 的子組件里,如果通過下面的代碼修改,會警告
export default defineComponent({
props: {
params: Object
},
setup(props) {
props.params.list.push(1) // 會警告,但依然能生效
}
})
但通過下面的方法修改,就能消除警告
export default defineComponent({
props: {
params: Object
},
setup(props) {
const list = toRef(props.params, 'list')
list.push(1) // 沒有警告了,依然生效
}
})