- Arrow function's deep option is work.
- Raw Reactive Object's deep option is not work.
It looks like a bug, why watch’s option deep do not work in reactive, but work in reactive getter?
1.Code
setup() {
const state = reactive({
id: 1,
attrs: {
date: new Date()
}
})
watch(state, (val, prevVal) => {
console.log('non-deep', val, prevVal)
})
watch(
() => state,
(val, prevVal) => {
console.log('non-deep getter', val, prevVal)
}
)
watch(
state,
(val, prevVal) => {
console.log('deep', val, prevVal)
},
{ deep: true }
)
watch(
() => state,
(val, prevVal) => {
console.log('deep getter', val, prevVal)
},
{ deep: true }
)
const changeDate = () => (state.attrs.date = new Date())
return {
state,
changeDate
}
}
2.The console logs
non-deep Proxy {id: 1, attrs: {…}} Proxy {id: 1, attrs: {…}}
deep Proxy {id: 1, attrs: {…}} Proxy {id: 1, attrs: {…}}
deep getter Proxy {id: 1, attrs: {…}} Proxy {id: 1, attrs: {…}}