即使dataSource中的数据未更改,是否也可以强制重新渲染ListView?我的应用程序中的选项卡栏中有一个ListView,我希望每次选择该选项卡时都重新绘制它,而不管数据是相同还是已更改。
this.state = { data: props.data, dataSource: new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}) } componentWillMount() { this.setState({ dataSource: this.state.dataSource.cloneWithRows(nextProps.data) }) } render() { <ListView dataSource={this.state.data} renderRow={this._renderRow} /> }
我尝试使用rowHasChanged参数,但这没有帮助。任何帮助将非常感激
rowHasChanged
因此,据我所知,您的用例是由于value更改而重新呈现ListView的所有行。我不知道是什么value,要由您确定,但是我会用它value来解释我的答案:
value
有几种解决方法。每个都有优点和缺点:
<ListView key={value} ... />
this.setState({ dataSource: new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 }).cloneWithData(this.props.data) });
(r1, r2) => r1.value !== r2.value && r1.data !== r2.data
nextProps.data.map(data => ({ data, value })
对我来说,第三个也是最后一个解决方案是最好的,因为: