簡體   English   中英

React Native-Redux〜不調用時更新道具

[英]React Native - Redux ~ Props updating when not getting called

我在使用Redux時遇到React Native問題。

我正在使用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對象。

問題出在我所有的減速器中。

在每個reducer case語句的末尾,我做了一個默認操作,將狀態設置為在reducer頂部定義的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;
  }

};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM