javascript - React Native - 使用异步数据填充 ListView

标签 javascript reactjs react-native

我通过 redux 存储获取 items 列表作为 prop。这个 Prop 是异步的。

我的 ListView 使用同步硬编码数据。所以问题是当我实际收到它时用 Prop 填充。

我正在用这个项目 Prop 数据制作一个 ListView。使用此 Prop 设置状态的生命周期选择的最佳实践是什么?我试过 componentDidMount - 但那太早了,只调用了一次。我尝试了 componentWillReceiveProps - 我得到了 Prop ,但我的观点没有改变。我还尝试了 componentWillUpdate 并且接到了太多电话!我很想把它放在渲染函数中,因为我知道当我得到它时我可以捕获那个 Prop ,但这使得渲染函数不再纯粹。

感谢您的帮助!

this.setState({
  dataSource: this.state.dataSource.cloneWithRows(this.props.items);
})

最佳答案

解决方案是我实际上需要将项目作为 List 从不可变的转换为 ListView 的 JS Array。不是我最初认为问题出在问题上。

解决方法如下:

componentWillReceiveProps(newProps){
    if(newProps.items){
      this.setState({
        dataSource: this.state.dataSource.cloneWithRows(newProps.items.toJS())
      })
    }
  }

我仍然想知道我是否通过使用 componentWillReceiveProps 来使用最佳实践。我还想知道我必须从 List 转换为 Array 是否有点奇怪,但如果它纯粹是表示性的,那没问题,对吧?

关于javascript - React Native - 使用异步数据填充 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42567751/

相关文章:

javascript - 在组件中读取文本输入引用时,React Native refs 未定义

android - react native Android FCM : Didn't get a token

javascript - 过滤掉不属于某个类的属性

javascript - jquery中实例的初始化问题和使用

javascript - Angularjs 1.3.15 - 在 Promise 返回后更新 $scope

javascript - Reactjs:无限滚动不起作用

javascript - react js : import component to route

javascript - react native : Flat List not showing up

javascript - Grid 内的列在 react-native-base 中占一半宽度

javascript - 如何打破 io 套接字中的 setinterval - Nodejs