从状态中删除对象后组件没有重新加载,我正在使用 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 的状态和每个调度的动作及其影响。
我正在开发一个在线流媒体应用程序,用户可以在其中创建、编辑、删除和托管流媒体。问题是当我尝试删除流时,它会在数据库中将其删除,但显示流的主要组件不会重新加载,尽管它会在用户创建或编辑流时自行重新加载。
这是我的动作创建器:
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 的状态和每个调度的动作及其影响。