我至少见过一个类似的question人.

然而,我感兴趣的是react-native 应用程序中的redux使用模式是什么,该应用程序具有ListView.还原程序是否应该创建一个新的ListView.每次都是数据源?这是否会导致性能问题等,正如我指出的问题可能提出的那样?或者我应该从组件的componentWillReceiveProps()中获取一个偏差并调用setState({datasource : new ListView.Datasource()}),该组件具有ListView

推荐答案

我走了ComponentWilleReceiveProps路由.鉴于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)
  });
}

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

React-native相关问答推荐

React本机组件未更新状态

FlatList 总是增长到 100% 高度

React Native - 何时调用componentWillUnmount?

如何获取 React Native 应用程序的崩溃日志(log)?

从 React-Native 应用程序中的另一个类访问静态变量?

React-native 解码 base64 编码字符串

textAlignVertical不是有效的样式属性

如何在 react-native 上自动聚焦下一个 TextInput

React Native:ScrollView 中的 TouchableOpacity onPress 问题

React Native + Jest EMFILE:too many open files error

Android 依赖 'com.google.android.gms:play-services-stats' 的编译(16.0.1)和运行时(17.0.0)类路径有不同的版本

opneUrl react-native 链接调用,mailto

React Native 得到这个错误'Unrecognized operator abs'

通过 IOS 中的 Linking.openURL React Native Open 设置

动态改变 React Native Flat List 中的列数

我们可以在 react webapp 和 react native 应用程序之间共享代码吗,并且可以在 react-native 生产环境中使用

Node.js 在 React-Native 中的作用是什么?

如何在 React Native 上隐藏 createStackNavigator 的标题?

将 colored颜色 变量导入我的样式

使用行数react-native文本组件