ami*_*rfl 5 realm react-native
我有一个存储在Realm DB中的"Activity"对象列表,它们显示在ListView上.最初加载数据并在屏幕上显示数据没有问题.但是,当数据更新时(在另一个屏幕中,我们称之为'详细编辑屏幕')并且用户返回列表屏幕,列表不会更新.
我尝试在render方法中设置setState,但是返回一个空白屏幕.
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>
)
...
}
Run Code Online (Sandbox Code Playgroud)
小智 4
我和你有同样的问题。我的问题是通过使用 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=... />
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2636 次 |
| 最近记录: |