【发布时间】:2018-11-08 14:41:42
【问题描述】:
我对特定用例有疑问
我的应用程序可以调用store.commit 3 次或更多
在一秒钟内,那些使应用程序滞后或冻结浏览器的人。
所以我虽然是,我可以缓冲状态变化吗
在实际提交更改和更新视图之前。
对于第一个我不清楚的问题是, vue 是否会更新它对每个状态变化的看法?
例如我有以下代码
state = {
// Here i was using object instead of array of object
// so I can get into my target object instead of
// finding my target object first
rooms: {
1: { id: 1, name: 'Room 1' },
2: { id: 2, name: 'Room 2' },
3: { id: 3, name: 'Room 3' }
}
}
mutations: {
setRoom(state, payload) {
const id = payload.id
const oldData = state.rooms[id]
const newData = Object.assign({}, oldData, payload.room)
Vue.set(state.rooms, id, newData)
}
}
actions: {
updateRoom(store, { roomId, patch }) {
store.commit('setRoom', { id: roomId, room: patch })
}
}
// And later
store.dispatch('updateRoom', { roomId: 1, patch: { name: 'Room 11' } })
store.dispatch('updateRoom', { roomId: 2, patch: { name: 'Room 22' } })
store.dispatch('updateRoom', { roomId: 3, patch: { name: 'Room 33' } })
// Those store.dispatch come from a websocket and possible to have
// custom `patch` data
对于第二个问题,如果上面的代码更新了 3 次。 有没有办法缓冲更改或更新视图 只有一次?
所以不要改变状态 3 次 第一次改变
{
rooms: {
1: { id: 1, name: 'Room 11' },
2: { id: 2, name: 'Room 2' },
3: { id: 3, name: 'Room 3' }
}
}
秒变
{
rooms: {
1: { id: 1, name: 'Room 11' },
2: { id: 2, name: 'Room 22' },
3: { id: 3, name: 'Room 3' }
}
}
第三次改动
{
rooms: {
1: { id: 1, name: 'Room 11' }
2: { id: 2, name: 'Room 22' },
3: { id: 3, name: 'Room 33' }
}
}
它可以变成只发生了一个变化吗?喜欢
{
rooms: {
1: { id: 1, name: 'Room 11' }
2: { id: 2, name: 'Room 22' },
3: { id: 3, name: 'Room 33' }
}
}
【问题讨论】:
标签: javascript vue.js vuex