如何在vuex中配置watch选项?
时间: 2023-10-25 13:08:51 浏览: 91
在Vuex中,你可以使用`watch`选项来监听store中的状态的变化。下面是一个示例:
```
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++
}
},
actions: {
incrementAsync({ commit }) {
setTimeout(() => {
commit('increment')
}, 1000)
}
},
getters: {
doubleCount(state) {
return state.count * 2
}
},
})
store.watch(
state => state.count,
(newValue, oldValue) => {
console.log(`count changed from ${oldValue} to ${newValue}`)
}
)
```
在上面的示例中,我们使用`watch`方法来监听`count`状态的变化。当`count`状态发生变化时,我们会打印出新值和旧值。
在`watch`方法中,第一个参数是一个函数,它返回要监听的状态。在这个函数中,我们返回了`state.count`,因此我们将监听`count`状态的变化。第二个参数是一个回调函数,它会在状态发生变化时被调用。在这个回调函数中,我们打印出新值和旧值。
你也可以使用类似于Vue组件中的`deep`选项和`immediate`选项来配置`watch`方法。例如:
```
store.watch(
state => state.obj,
{
deep: true,
immediate: true,
handler(newValue, oldValue) {
console.log(`obj changed from ${oldValue} to ${newValue}`)
}
}
)
```
在上面的示例中,我们监听了一个`obj`状态,并配置了`deep`选项和`immediate`选项。`deep`选项表示是否深度监听,如果为`true`,则当`obj`对象的属性发生变化时,也会触发回调函数。`immediate`选项表示是否在监听时立即调用回调函数,如果为`true`,则在监听时将立即调用回调函数。
阅读全文