[英]State changing to undefined value. I'm using redux-toolkit with redux-persist
I'm trying change my state in the login reducer, but after the state.user = data.user
operation, the console.log
prints undefined .我正在尝试在登录减速器中更改我的 state,但是在
state.user = data.user
操作之后, console.log
打印undefined 。
My authSlice:我的授权切片:
import { createSlice } from '@reduxjs/toolkit';
import api from '../../config/api';
const authSlice = createSlice({
name: 'auth',
initialState: {
user: null,
token: '',
},
reducers: {
async register(state, action) {
console.log(action);
await api
.post('users', action.payload)
.then(({ data }) => {
state = data.data;
console.log(state);
})
.catch((err) => {
console.log(err);
});
},
async login(state, action) {
try {
const { data } = await api.post('sessions', action.payload);
console.log(state);
state.user = data.user;
console.log(state);
state.token = data.token;
} catch (err) {
console.log(err.response && err.response.data.error);
}
},
},
});
const { actions, reducer } = authSlice;
export const { register, login } = actions;
export default reducer;
My store:我的店铺:
import {
configureStore,
combineReducers,
getDefaultMiddleware,
} from '@reduxjs/toolkit';
import { AsyncStorage } from 'react-native';
import {
persistReducer,
persistStore,
FLUSH,
REHYDRATE,
PAUSE,
PERSIST,
PURGE,
REGISTER,
} from 'redux-persist';
import { authReducer, newsReducer } from '../features';
const rootReducer = combineReducers({
authReducer,
newsReducer,
});
const persistConfig = {
key: 'root',
storage: AsyncStorage,
whitelist: ['auth'],
};
const persistReducers = persistReducer(persistConfig, rootReducer);
const store = configureStore({
reducer: persistReducers,
middleware: getDefaultMiddleware({
serializableCheck: {
ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],
},
}),
});
export const persistor = persistStore(store);
export default store;
In addition, when I configure my middleware property from configureStore to另外,当我将我的中间件属性从 configureStore 配置为
middleware: getDefaultMiddleware({
serializableCheck: {
ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],
},
}),
That prints the following error in my console:这会在我的控制台中打印以下错误:
I haven't used Redux' toolkit/ createSlice()
myself, but they have a whole section on async thunks: https://redux-starter-kit.js.org/api/createAsyncThunk我自己没有使用过 Redux 的工具包/
createSlice()
,但他们有一整节关于异步 thunk: https://redux-starter-kit.js.org/api/createAsyncThunk
Ie you dispatch()
async functions (actions, which triggers side effects), and don't perform side effects in reducers (and they shouldn't be async).即你
dispatch()
异步函数(触发副作用的动作),并且不在减速器中执行副作用(它们不应该是异步的)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.