【问题标题】:React native redux and ListView反应原生 redux 和 ListView
【发布时间】:2016-07-04 13:36:19
【问题描述】:

我至少见过一个类似的question

但是,我对在具有 ListView 的 react 本机应用程序中使用 redux 的模式感兴趣。减速器应该每次都创建一个新的 ListView.Datasource 吗?这会导致性能问题等,正如我指出的问题所问的那样?还是我应该采取偏差并从具有ListView 的组件的componentWillReceiveProps() 调用setState({datasource : new ListView.Datasource()})

【问题讨论】:

    标签: react-native react-redux


    【解决方案1】:

    我选择了 componentWillRecieveProps 路线。鉴于cloneWithRows 每次更新时都需要一个新对象(取决于您如何使用rowHasChanged),因此需要将一组新数据传递给它。幸运的是,使用 redux reducer,就您返回的数据而言,这种模式无论如何都是预期的。

    这是我在自己的应用中的做法:

    componentWillReceiveProps(newProps) {
      let days = newProps.days;
      if (newProps.viewingDayUuid !== this.props.viewingDayUuid) {
        days = days.map((day) => {
          if (day.uuid === newProps.viewingDayUuid || day.uuid === this.props.viewingDayUuid) {
            return Object.assign({}, day);
          } else {
            return day;
          }
        });
      }
      this.setState({
        dataSource: this.state.dataSource.cloneWithRows(days)
      });
    }
    

    如果列表视图中的当前选定(突出显示状态)导航项需要更改,我决定创建一个新的 day 对象,您可以忽略该块。而不是每次都返回全新的对象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多