Vuex模块能否监视其他模块的状态,并因此触发操作?
例如,让我们考虑以下情况:
store.js
import time from './store/time' ;
import position from './store/position' ;
const store = new Vuex.Store
(
{
modules:
{
time,
position
}
}
) ;
存储/时间.js
export default
{
namespaced: true,
state:
{
time: new Date()
},
getters:
{
time: (aState) => aState.time
},
mutations:
{
setTime (aState, aTime)
{
aState.time = aTime ;
}
}
} ;
存储 / 位置.js
export default
{
namespaced: true,
state:
{
positions: {}
},
getters:
{
positions: aState => aState.positions
},
mutations:
{
setPositions (aState, aPositionArray)
{
aState.positions = aPositionArray ;
}
},
actions:
{
fetchPositionsAtTime ({ dispatch, commit, rootGetters }, { time })
{
// Fetch positions at given time from the server
// commit('setPositions', ...)
}
}
} ;
理想情况下,我希望位置模块能够监听时间模块,并在时间状态发生更改时重新获取位置(即触发fetchPositionsAtTime
)。当然,我可以在
setTime
变异中添加一个分派来触发位置模块操作,但我认为从另一个方向(即监听)会更加优雅(因为可能需要更多的模块)。有什么解决方案吗?(当然不能使用
Vue Component
,这是整个问题的关键所在)