gpt4 book ai didi

react-native - Realm 数据更改时如何更新 React Native ListView

转载 作者:行者123 更新时间:2023-12-04 03:57:05 25 4
gpt4 key购买 nike

我有一个存储在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com