React native redux和ListView

Sat*_*lam 14 react-native react-redux

我至少看到过一个类似的问题.

但是我感兴趣的是在具有a的反应本机应用程序中redux使用的模式是什么ListView.Reducer是否应该每次都创建一个新的ListView.Datasource?这是否会导致性能问题,我可能会问到这个问题?或者我应该采取偏差并setState({datasource : new ListView.Datasource()})从具有ListView?的组件的componentWillReceiveProps()调用?

agm*_*eod 13

我去了componentWillRecieveProps路线.鉴于cloneWithRows每次更新时需要一个新对象(取决于您的使用方式rowHasChanged),需要将一组新数据传递给它.幸运的是,对于redux减速器,无论如何,就您返回的数据而言,这种模式是可取的.

这是我在我的应用程序中做到的方式:

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)
  });
}
Run Code Online (Sandbox Code Playgroud)

你可以忽略的if块,如果列表视图中当前选中的(突出显示状态)导航项需要更改,那就是我决定制作新的一天对象.而不是每次都返回全新的对象