javascript - React Native 和 Redux : Why aren't child components re-rendering on every state update?

标签 javascript html reactjs react-native redux

在 React Native 和 Redux 中,我有一个 <NavigationCardStack/> 作为根组件。每次更新状态时,redux-logger 都会正确更新下一个/新状态。

并且在状态更改之后,当新更新的状态在子组件中被控制台记录时,它不会控制台记录更新的状态,而是控制台记录初始状态(在子组件 childPage.js 和日志记录:render(){ console.log(this.props.state) return(...) ... 中)。

会不会是我错误地连接到 Redux 或缺少某些东西?因为,一切似乎都运行良好且合情合理。

提前致谢!

以下是我的一些代码片段:

这是我的 reducer,即使添加和更新了其他属性,子组件也只会在此处记录 initialState:

const initialState = {
  meetUp: false,
}

function itemReducer(state = initialState, action) {
  switch(action.type) {


    case ITEM_QUANTITY:
      return {
        ...state,
        quantity: action.quantity
      }

    case ITEM_PRICE:
      return {
        ...state,
        price: action.price
      }

    case ITEM_MEET_UP:
      return {
        ...state,
        meetUp: action.meetUp
      }

     default:
       return state
  }
}

export default itemReducer

然后像这样连接到根组件:

function mapStateToProps(state) {
  return {
    itemInfo: state.itemReducer,
    ...
  }
}

export default connect(
  mapStateToProps,
  {
    itemQuantity: (value) => itemQuantity(value),
    itemPrice: (value) => itemPrice(value),
    itemMeetUp: (value) => itemMeetUp(value),
  }
)(NavigationRoot)

通过以下操作:

export function itemMeetUp(value) {
  return {
    type: ITEM_MEET_UP,
    meetUp: value
  }
}

export function itemQuantity(value) {
  return {
    type: ITEM_QUANTITY,
    quantity: value
  }
}

export function itemPrice(value) {
  return {
    type: ITEM_PRICE,
    price: value
  }
}

state={this.props} 表示状态以及它应该如何传递给子组件

  _renderScene (props) {
    const { route } = props.scene

    return (
      <route.component _handleNavigate={this._handleNavigate.bind(this)} state={this.props}/>
    )
  }

    <NavigationCardStack
      renderScene={this._renderScene}
      ...
    />

最佳答案

可以 this issue有关系?看起来很相似,因为即使 redux 状态发生变化,NavigationCardStack 也不会更新,而 redux-logger 会记录变化。我无法从您的代码示例中看出,但是测试此方法的一种方法可能是 connect child 或一个 child 直接连接到您的 redux 存储,而不是让 NavigationCardStack 通过将状态存储为 Prop ?上面的 github 问题也有一些 hacky 解决方法,但我对 react-native 不是很熟悉所以我不能提供太多帮助。

关于javascript - React Native 和 Redux : Why aren't child components re-rendering on every state update?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39354493/

相关文章:

javascript - Ajax 请求返回 200 OK,但触发了错误事件而不是成功

javascript - 如何在同一个下拉菜单中调用不同的div

javascript - 如何制作带有子链接的可点击列表?

reactjs - Gatsby:从内容字段创建页面

javascript - 动态设置弹出div的位置

javascript - 使用 jQuery 在单击按钮时在输入中插入 <p> 元素

html - flex 元素之间的相等空间

php - 内部链接到列表中的子项

javascript - 我的 X 轴没有呈现我想要的所有刻度 - D3 JS

javascript - 巴别塔 : duplicate plugin/preset error detected