即使状态更新正确,UseSelector也会返回undefined



我有一个使用react Redux的react管理项目。

以下是详细信息:

slice.tsx:
import {createSlice} from "@reduxjs/toolkit";
const newRevisionSlice = createSlice({
name: 'newRevision',
initialState: {
dataList: [],
status: 'idle'
},
reducers: {
postSaveNewRevision: (state  = { dataList:[], status:"idle" }, action) => {
return { ...state, dataList: action.payload, status: 'success' };
}
}
});

export const { postSaveNewRevision } = newRevisionSlice.actions;
export default newRevisionSlice.reducer;
component.tsx: 
const newRevision  = useSelector((state: RootState) => state.newRevision)
store.tsx:
declare global {
interface Window {
__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?: typeof compose;
}
}
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const rootReducer = combineReducers({
fleetType: fleetTypeApi,
revisionNo: revisionNoApi,
revisionDate:revisionDateApi,
newRevision: newRevisionApi,
});
const store = createStore(rootReducer, composeEnhancers(applyMiddleware(thunk)));
const useAppDispatch = () => store.dispatch;
export type RootState = ReturnType<typeof store.getState>;
export { useAppDispatch };
ReactDOM.render(
<Provider store={store}>
<React.StrictMode>
<App />
</React.StrictMode>
</Provider>,
document.getElementById('root')
);

在react redux devtool中,我看到当我调度时状态被正确更新。但是,在组件中使用Selector so newRevision会返回undefined。

你能帮帮我吗?

提前谢谢。

您的newRevisionSlicestore.jsx中的newRevisionApi有可能是两个不同的减速器吗?如果是这种情况,那么newRevision有两个独立的存储,它们不会共享状态。

解决的类似问题:

  • useSelector未使用Redux Toolkit更新
  • useSelector状态返回未定义

此外,因为useSelector()返回undefined,所以切片/还原器的名称也可能存在拼写错误。

相关内容

  • 没有找到相关文章

最新更新