javascript - 错误类型错误 : Cannot delete property '1' of [object Array]

标签 javascript ngrx angular10

我正在开发 Angular 10 版本的 ngrx
在 Reducer 中,想添加将删除用户的操作
当我尝试下面的代码时,遇到了问题:
错误类型错误:无法删除 [object Array] 的属性“1”
不理解这种行为,因为我只是试图通过其位置从数组中删除一个元素
我调试并看到它正在获取数组中特定对象的索引
state.users.splice(indx, 1);

出错
export interface State {
  users: IProduct[],
  error: string
}

export const initialState: State = {
  users: [],
  error: ''
};

export function reducer(state = initialState, action: UserActions): State {
  switch (action.type) {

    case UserActionTypes.DeleteUser:
      const indx = state.users.findIndex(user => user.id === action.payload.data.id);
      state.users.splice(indx, 1);
      return {
        ...state
      }

    case UserActionTypes.LoadUsers:
      return {
        ...state
      }

    case UserActionTypes.LoadUsersSuccess:
      return {
        ...state,
        users: [...state.users, ...action.payload.data],
        error: ''
      }

    case UserActionTypes.LoadUsersFailure:
      return {
        ...state,
        users: [],
        error: action.payload.error
      }

    default:
      return state;
  }
}

最佳答案

终于找到答案了
我在新变量 newState 中分配了数据,然后从那个

中删除了对象
case UserActionTypes.DeleteUser:
      const index  = state.users.findIndex(user => user.id === action.payload.data.id);
      let newState = [...state.users];
      newState.splice(index, 1);
      return {
        users: newState,
        error:''
}

我只是在给定的场景中更改了上面的代码

export interface State {
  users: IProduct[],
  error: string
}

export const initialState: State = {
  users: [],
  error: ''
};

export function reducer(state = initialState, action: UserActions): State {
  switch (action.type) {

    case UserActionTypes.DeleteUser:
      const index  = state.users.findIndex(user => user.id === action.payload.data.id);
      let newState = [...state.users];
      newState.splice(index, 1);
      return {
        users: newState,
        error:''
      }

    case UserActionTypes.LoadUsers:
      return {
        ...state
      }

    case UserActionTypes.LoadUsersSuccess:
      return {
        ...state,
        users: [...state.users, ...action.payload.data],
        error: ''
      }

    case UserActionTypes.LoadUsersFailure:
      return {
        ...state,
        users: [],
        error: action.payload.error
      }

    default:
      return state;
  }
}

关于javascript - 错误类型错误 : Cannot delete property '1' of [object Array],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63753009/

相关文章:

javascript - php 中的静态标题布局

typescript - Angular 10 和 ES2020 中的模块解析因可选链而失败

angular - 错误 : Error on worker #1: Error: Debug Failure. 未处理的 SyntaxKind:未知

node.js - 两台相同型号的笔记本电脑之间的 Angular 编译器速度很慢

javascript - Uncaught ReferenceError : require is not defined react + webpack

c# - 在下拉框的选定索引更改事件触发后的代码中实现 javascript 确认框

angular - 如何使用@ngrx/entity 按 id 选择单个对象

angular - 每次服务器响应+延迟后轮询服务器

javascript - 如何使用 jQuery 从输入类型文件中获取选定的文件名和文件路径

javascript - NgRX store.select 返回存储对象而不是可观察对象