从状态中删除对象后组件没有重新加载,我正在使用 React-redux

Component isn't reloading after deleting an object from the state, I'm using React-redux

我正在开发一个在线流媒体应用程序,用户可以在其中创建、编辑、删除和托管流媒体。问题是当我尝试删除流时,它会在数据库中将其删除,但显示流的主要组件不会重新加载,尽管它会在用户创建或编辑流时自行重新加载。

这是我的动作创建器:

export const deleteStream = (id) => async dispatch => {
  await streams.delete(`/streams/${id}`);

  dispatch({ type:'DELETE_STREAMS', payload: id });
  history.push('/');
}

这是减速器:

const streamReducer = (state = {}, action) => {
  switch(action.type){
    case 'DELETE_STREAM':
      return {...state, [action.payload]: undefined};
      //I also used lodash to delete it alternatively as- return _.omit(state, action.payload);
    default:
      return state;
  }
}

此外,不要忘记对象是在我的服务器中插入的键,即我没有对象数组,而是对象对象。

复数问题! DELETE_STREAMS 对比 DELETE_STREAM。你分派前者,减少后者。

这就是为什么将您的操作定义在某个地方总是一个好主意,即使只是 export const X = "X"。然后总是引用它们而不是使用字符串文字。

更新您的 React 渲染不是错误,但 redux 从未更新过。一个很好的调试工具是 redux devtools https://github.com/reduxjs/redux-devtools,你可以看到 redux 的状态和每个调度的动作及其影响。