Javascript Vuex商店没有';不要更新状态
我的应用程序有一个小功能,如果用户单击某个特定的图像,它会被一个列表删除,并移动到Vuex商店中的另一个 这其实很简单:Javascript Vuex商店没有';不要更新状态,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,我的应用程序有一个小功能,如果用户单击某个特定的图像,它会被一个列表删除,并移动到Vuex商店中的另一个 这其实很简单: // Action async movePicture({ commit }, data) { try { const comment = await this.$axios.$post('/photo-check', data) commit('MOVE_PHOTO', photoId) } catch (error) {
// Action
async movePicture({ commit }, data) {
try {
const comment = await this.$axios.$post('/photo-check', data)
commit('MOVE_PHOTO', photoId)
} catch (error) {
throw error.response
}
},
// Mutation
MOVE_PHOTO: (state, id) => {
const i = _.findIndex(state.list, p => p.id === id)
if (i > -1) {
const photo = state.list[i]
state.list.splice(i, 1)
state.visited.push(photo)
}
},
问题是,不幸的是,这张图片无法从
列表中拼接,我不明白为什么。。。也许我应该使用一些特定的东西来更新Vuex中的阵列,但我不知道。。。此外,我找不到任何不同的解决方案……JavaScript不擅长处理这些情况
你应该使用
this.$delete(state.list, index)
JavaScript不擅长处理这些情况
你应该使用
this.$delete(state.list, index)
是否为您提供了魔术位。Vue支持拼接,您不必使用删除method@dreijntjensVue会,Vuex不会。由于Vue会使Vuex存储的状态变为反应状态,因此当我们改变状态时,观察该状态的Vue组件将自动更新。这也意味着在使用普通Vue时,Vuex突变也会受到同样的反应性警告
,因为Vuex是使用Vue反应的,所以Vuex也支持剪接?想知道哪里不支持它Vuex的工作原理是一样的。Vue支持拼接,您不应该使用删除method@dreijntjensVue会,Vuex不会。由于Vue会使Vuex存储的状态变为反应状态,因此当我们改变状态时,观察该状态的Vue组件将自动更新。这也意味着在使用普通Vue时,Vuex突变也会受到同样的反应性警告
,因为Vuex是使用Vue反应的,所以Vuex也支持剪接?想知道您在哪里发现它不受支持Vuex的工作原理与此相同。Vuex是否未更新,或者您的视图是否表示数据未更新?我使用相同的结构,工作完美。您确定该项位于state.list中。movePicture
操作中的photoId
变量来自何处?您是否检查了拼接前的索引是否正确?您能否确认照片是否正确添加到状态。已访问?数据传递正确,id来自照片本身。在我看来,一切都是正确的。如果我添加2个console.log
以显示列表
和已访问
我仍然可以看到未从状态更新的项目。索引始终大于-1。vuex是否未更新,或者您的视图是否表示未更新的数据?我使用相同的结构,工作完美。您确定该项位于state.list中。movePicture
操作中的photoId
变量来自何处?您是否检查了拼接前的索引是否正确?您能否确认照片是否正确添加到状态。已访问?数据传递正确,id来自照片本身。在我看来,一切都是正确的。如果我添加2个console.log
以显示列表
和已访问
我仍然可以看到未从状态更新的项目。索引始终大于-1。