我有一个redux工具包切片如下
import { createSlice } from '@reduxjs/toolkit';
const initialState = {
value: null,
};
export const authSlice = createSlice({
name: 'auth',
initialState,
reducers: {
setAuth: (state, action) => {
state.value = action.payload;
},
},
});
export const { setAuth } = authSlice.actions;
export default authSlice.reducer;
我可以使用useDispatch
函数组件如下setAuth
const dispatch = useDispatch();
const auth = useSelector((state) => state.auth.value);
const setAuthValue = (value) => {
dispatch(setAuth(value));
};
然而,我有一个场景,我不能为此useDispatch
钩子。(例如:inside axios interceptor)
是否有可能我直接使用store.dispatch({'type': '', payload: {}}
像正常的redux与上面的redux工具箱切片?
或有什么更好的方法吗?
我也有同样的问题,只是让它工作。在纯js文件中(在组件函数上下文之外),只需导入从切片导出的setAuth
操作。然后,您可以像这样调度它:store.dispatch(setAuth(payload))
这是useDispatch
在react-redux
库中的函数:
function useDispatch() {
const store = useStore()
return store.dispatch
}
您可以从store.js
导出存储,并使用store.dispatch