Проблема "значение состояния изменяется на неопределенное при вызове Redux-действия" - PullRequest
2 голосов
/ 02 апреля 2020

У меня проблема с изменением состояния магазина. Я хочу установить loggedIn и storeNum при входе в систему. js, но когда я вызываю 'changeLoggedIn (true)' и 'setStoreNum (1)', ранее вызванное значение изменяется на undefined.

Пожалуйста, дайте мне совет установить оба значения вместе без неопределенного значения.

Спасибо.

enter image description here

редуктор. js

import { CHANGE_LOGGED_IN, SET_STORE_NUM } from './actions';

const defaultState={
    loggedIn: false,
    storeNum: 0,
  }
const loggedInReducer = ( state = defaultState, action) => {
  switch (action.type) {

    case CHANGE_LOGGED_IN:
      return{
        loggedIn: action.loggedIn
      }

    case SET_STORE_NUM:
      return{
        storeNum: action.storeNum
      }
    default: return state;
  };
};

export default loggedInReducer;

действия. js

export const SET_STORE_NUM = 'SET_STORE_NUM'


export const changeLoggedIn = (loggedIn) => ({
  type: CHANGE_LOGGED_IN,
  loggedIn: loggedIn,
});

export const setStoreNum = (storeNum) => ({
  type: SET_STORE_NUM,
  storeNum: storeNum,
})

логин. js

export default connect(
    state => ({
        loggedIn: state.loggedIn,
        storeNum: state.storeNum
    }),
    dispatch => ({
        changeLoggedIn: (loggedIn) => dispatch(changeLoggedIn(loggedIn)),
        setStoreNum: (storeNum) => dispatch(setStoreNum(storeNum))
    })
)(Login);

1 Ответ

2 голосов
/ 02 апреля 2020

Это потому, что вы возвращаете loggedIn только для действия CHANGE_LOGIN.

Верните это:

const loggedInReducer = ( state = defaultState, action) => {
  switch (action.type) {

    case CHANGE_LOGGED_IN:
      return{
        ...state,
        loggedIn: action.loggedIn
      }

    case SET_STORE_NUM:
      return{
        ...state,
        storeNum: action.storeNum
      }
    default: return state;
  };
};

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...