在React Native中,使用Realm,在哪里执行查询的最佳做法是什么?这意味着,如果您需要初始状态的数据,您的查询是否应在ComponentWillMount内完成?或者你应该只是在ComponentDidMount之后更新状态?或者查询总是位于render()中?或者您应该在导航到场景之前执行查询并将结果作为道具传递?
基本上根据您的应用可能需要数据的时间,在您应该和不应该的位置寻找一些最佳实践。
希望这不是太通用,但似乎并不是Realm / React Native的大量资源。
答案 0 :(得分:3)
您应该在constructor
上执行查询,然后在ComponentDidMount
中更改状态并使用ActivityIndicator
或某种反馈
让用户知道你正在获取一些数据。
constructor(props) {
super(props);
let dataSource = new ListView.DataSource({
rowHasChanged: (row1, row2) => row1 !== row2,
});
this.state = {
dataSource: dataSource.cloneWithRows(dataSource), // Bad
items: realm.objects('Item').sorted('name'),
};
this.componentDidMount = this.componentDidMount.bind(this);
}
componentDidMount() {
this.setState({
dataSource: this.state.dataSource.cloneWithRows(this.state.items),
});
}