我正在建立登录系统.当我使用 Select 器函数时,我在存储状态值时遇到问题.在我的系统中,我想从存储状态值中获取isSuccess、Error、UserInfo
/login/index.js
个
const userLogin = useSelector((state) => state.userLogin);
console.log(userLogin);
const { isSuccess, error, userInfo } = userLogin;
如果出错,它将在用户界面上显示错误消息,否则,如果isSuccess,它将显示成功消息.当POST到API成功(表示用户登录成功)且用户数据被调度到登录时出现isSuccess成功会减少发送到登录的错误值否则会失败减少
/action/userAction.js
个
import {
loginSuccess,
loginFail,
} from "\~/redux/user/userLoginSlice";
export const login = (inputs) =\> async (dispatch) =\> {
try {
const {data} = await request.post("/auth/login", inputs);
dispatch(loginSuccess(data));
localStorage.setItem("userInfo", JSON.stringify(data));
} catch (error) {
console.log(error.response.data)
dispatch(loginFail(error.response.data))
}
.然而,不仅仅是在登录成功减少时获取isSuccess,它还在上次登录失败时获得错误 console.log(userLogin).它应该只显示userInfo和isSuccess.有人能帮我解决这个问题吗?这是减少
userLoginSlice.js
个
import { createSlice } from '@reduxjs/toolkit';
const userLoginSlice = createSlice({
name: 'userInfo',
initialState: {},
reducers: {
loginSuccess: (state, action) => {
state.isSuccess = true;
state.userInfo = action.payload;
},
loginFail: (state, action) => {
state.error = action.payload
},
},
});
export const { loginSuccess, loginFail } = userLoginSlice.actions;
export default userLoginSlice.reducer;
还有我的减肥店
store.js
个
import { configureStore } from '@reduxjs/toolkit';
import productModalReducer from './product-modal/productModalSlice';
import cartItemsSlice from './cart/cartSlide';
import userLoginSlice from './user/userLoginSlice.js';
import userRegisterSlice from './user/userRegisterSlice.js';
import userUpdateSlice from './user/userUpdateSlice.js';
const userInfoFromStorage = localStorage.getItem('userInfo') ? JSON.parse(localStorage.getItem('userInfo')) : null;
const initialState = {
userLogin: { userInfo: userInfoFromStorage },
};
export const store = configureStore({
reducer: {
productModal: productModalReducer,
cartItems: cartItemsSlice,
userLogin: userLoginSlice,
userRegister: userRegisterSlice,
userUpdate: userUpdateSlice,
},
preloadedState: initialState,
});
当派单减少时,状态值不会改变