我有一个使用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。
你能帮帮我吗?
提前谢谢。
您的newRevisionSlice
和store.jsx
中的newRevisionApi
有可能是两个不同的减速器吗?如果是这种情况,那么newRevision
有两个独立的存储,它们不会共享状态。
解决的类似问题:
- useSelector未使用Redux Toolkit更新
- useSelector状态返回未定义
此外,因为useSelector()
返回undefined
,所以切片/还原器的名称也可能存在拼写错误。