React Native - Redux ~ Обновление реквизита, когда его не вызывают - PullRequest
0 голосов
/ 10 декабря 2018

У меня возникла проблема с React Native при использовании Redux.

Я использую состояние Redux, чтобы показать / скрыть модальное соединение от одного компонента к другому.Поскольку это, кажется, лучшее решение, учитывая, что оно является перекрестным компонентом.

У меня есть модальное открытие и закрытие, и оно работает точно так же, как это показано.Однако, когда я нажимаю на это, кажется, что реквизиты для родительского компонента снова обновляются до исходного состояния, и я не уверен, почему.

Родительский компонент:

const mapStateToProps = state => {
    return {
        modalVisible: state.modals.addRoomModalVisible
    }
};

const mapDispatchToProps = dispatch => {
    return {
        onMakeAddRoomModalActive: () => dispatch(makeAddRoomModalVisible())
    }
};

export default connect(mapStateToProps, mapDispatchToProps)(RoomsScreen);

Дочерний компонент

const mapStateToProps = state => {
    return {
        rooms: state.rooms.rooms
    }
};

const mapDispatchToProps = dispatch => {
    return {
        onGetRooms: () => dispatch(getRooms())
    }
};

export default connect(mapStateToProps, mapDispatchToProps)(RoomList);

Модальный редуктор

import { HIDE_ADD_ROOM_MODAL, SHOW_ADD_ROOM_MODAL } from "../actions/actionTypes";

const initialState = {
    addRoomModalVisible: false
};

const modalsReducer = (state = initialState, action) => {
  switch (action.type) {
      case SHOW_ADD_ROOM_MODAL:
          return {
              ...state,
              addRoomModalVisible: true
          };
      case HIDE_ADD_ROOM_MODAL:
          return {
              ...state,
              addRoomModalVisible: false
          };
      default:
          return initialState;
  }
};

export default modalsReducer;

Кажется, проблема заключается в том, что япозвоните onMakeAddRoomModalActive опору.Я вышел из консоли, состояние сбрасывается, устанавливается this.props.rooms и пустой массив, который является объектом initialState, который я определил.

1 Ответ

0 голосов
/ 10 декабря 2018

Проблема лежала во всех моих редукторах.

В конце каждого оператора случая редуктора я делал по умолчанию, который устанавливал состояние равным initialState, которое было определено в верхней части редуктора.

Мне нужно было изменить это, чтобы вместо этого было возвращено state.

const modalsReducer = (state = initialState, action) => {
  switch (action.type) {
      case SHOW_ADD_ROOM_MODAL:
          return {
              ...state,
              addRoomModalVisible: true
          };
      case HIDE_ADD_ROOM_MODAL:
          return {
              ...state,
              addRoomModalVisible: false
          };
      default:
          return state;
  }

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