我有一个存储在 Realm DB 中的“事件”对象列表,这些对象显示在 ListView 上。
最初加载数据并将其显示在屏幕上没有问题。但是,当数据更新(在另一个屏幕中,我们称之为“详细编辑屏幕”)并且用户返回到列表屏幕时,列表不会更新。
我试图在渲染方法中设置状态,但返回一个空白屏幕。
var activities = realm.objects('Activity').sorted('date');
let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
...
module.exports = React.createClass({
getInitialState: function(){
return {
dataSource: ds.cloneWithRows(activities),
};
},
...
render: function(){
//update the list of activities
activities = realm.objects('Activity').sorted('date');
this.setState({dataSource: ds.cloneWithRows(activities)});
return (
<View>
{(!activities || activities.length<1) && noActivitiesMessage}
<ListView style={styles.listStyle} dataSource={this.state.dataSource}
renderRow={this._renderRow} />
</View>
)
...
}
最佳答案
我和你有同样的问题。我的问题是通过使用 Realm ListView 解决的。我像这样使用它
import { ListView } from 'realm/react-native';
class List extends Component {
constructor(props) {
super(props);
}
componentDidMount() {
src = realm.objects('MyObject');
this.setState({
dataSource:this.state.dataSource.cloneWithRows(src),
data:src
});
}
updateData(){
// update or add object in Realm
this.setState({
dataSource:this.state.dataSource.cloneWithRows(this.state.data)
});
}
render(){
return(
<ListView
dataSource={this.state.dataSource}
renderRow=... />
}
}
关于react-native - Realm 数据更改时如何更新 React Native ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37529058/