Is it possible to force a ListView to re-render, even if the data in the dataSource has not changed? I have a ListView within a tab bar in my app and I want it to redraw eve
So your use-case, as I understand it, is to re-render all rows of ListView because of value
changes. I don't know what value
is, up to you to determine it, but I will use value
to explain my answer:
There are a few ways to solve this. each have pros and cons:
!! It tells React that ListView needs to get re-render when value changes (it will be unmounted, remounted).this.setState({
dataSource: new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !==
r2 }).cloneWithData(this.props.data)
});
value
and implements rowHasChanged properly. For instance: (r1, r2) => r1.value !== r2.value && r1.data !== r2.data
(<- this is JUST a possible way to represent the data, you have to chose your format, I just assumed you did clone dataSource with nextProps.data.map(data => ({ data, value })
).to me, the third and last solution is the best because:
value
s)here is an other answer I gave on that subject:
What are the exact inputs to rowHasChanged in ListView.DataSource