我通过 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/