从Vuex中的数组中删除项目

tim*_*one 2 vuex

我刚刚开始使用Vuex,但是遇到了问题(这可能是我的一些无知的语法错误)。我有一个具有Liked_items的用户,并且有一个与项目不同的网络呼叫。

mutations: {
SET_TOGGLE_LIKED: (state, { global_id }) => {
  alert('here is global_id: ' + global_id)
 state.user.liked_items.find((obj,i) => {
   if(obj.global_id === global_id){ // no global_id
      console.log('that exists at i: ' + i + ' with length: ' + state.user.liked_items.length)
      state.user.liked_items.splice(i, 1)
      console.log('that exists at i: ' + state.user.liked_items.length)
   }else{
     console.log('that doesnot exist!')
   }
 })
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,从“ likely_items”列表中删除了一个项目之后,该事件似乎被召回,并且我收到一个错误消息,即undefined上不存在global_id。

我可以通过以下方式修复:

 state.user.liked_items.find((obj,i) => {
   if(obj){
     if(obj.global_id === global_id){
Run Code Online (Sandbox Code Playgroud)

但是为什么我需要检查obj这里是否存在?

Rak*_*Haq 5

我们还可以使用map来获取存储数组index中的对象,并使用以下方法将其删除:

突变

REMOVE_OBJECT_FROM_ARRAY: (state, payload) => {
    const i = state.someArrayofObjects.map(item => item.id).indexOf(payload.id);
    state.someArrayofObjects.splice(i, 1);
  }
Run Code Online (Sandbox Code Playgroud)

在这里,id是与有效负载一起传递给的ID MUTATION,我们也只能id将整体传递payload。在这种情况下,我们可以执行以下操作:

REMOVE_OBJECT_FROM_ARRAY: (state, payload) => {
    const i = state.someArrayofObjects.map(item => item.id).indexOf(payload);
    state.someArrayofObjects.splice(i, 1);
  }
Run Code Online (Sandbox Code Playgroud)