所以,我尝试用相同的值更改初始状态并且观察者不执行,如果值不同,那么它会按预期工作。
状态:
const state = () => ({
pagination: {
activePage: 1,
itemsPerPageOptions: [
{ label: 1, value: 1 },
{ label: 2, value: 2 },
{ label: 3, value: 3 },
{ label: 16, value: 16 },
{ label: 24, value: 24 },
{ label: 32, value: 32 },
{ label: 40, value: 40 },
],
itemsPerPage: 2,
},
})
//对于每个状态我都有一个getter和一个setter(mutation)
const itemsPerPage = computed({
get: () => store.getters['globals/getItemsPerPage'],
set: value => store.commit('globals/setItemsPerPage', value),
})
let activePage = computed({
get: () => store.getters['globals/getActivePage'],
set: value => store.commit('globals/setActivePage', value),
})
watch(itemsPerPage, () => {
//some work
store.commit('globals/setActivePage', 1)
//or change the computed prop directly with activePage.value = 1
})
在上面的组件中,当 itemPerPage 值更改时,我通过将 activePage 设置为 1 来重置分页。在另一个组件中,我有一个观察者,它根据 activePage 从服务器检索数据:
watch(activePage, page => {
//get data from server
})
它不是这样工作的,但是如果我将 activePage 的初始状态更改为 2,那么它就可以工作,所以我在想,也许有办法强制这样做?