Javascript 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) {

我的应用程序有一个小功能,如果用户单击某个特定的图像,它会被一个列表删除,并移动到Vuex商店中的另一个

这其实很简单:

// 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。