React Native中的领域查询:查找查询的最佳位置是什么?

时间:2016-09-16 20:13:36

标签: react-native realm

在React Native中,使用Realm,在哪里执行查询的最佳做法是什么?这意味着,如果您需要初始状态的数据,您的查询是否应在ComponentWillMount内完成?或者你应该只是在ComponentDidMount之后更新状态?或者查询总是位于render()中?或者您应该在导航到场景之前执行查询并将结果作为道具传递?

基本上根据您的应用可能需要数据的时间,在您应该和不应该的位置寻找一些最佳实践。

希望这不是太通用,但似乎并不是Realm / React Native的大量资源。

1 个答案:

答案 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),
    });
  }

示例来自:https://stackoverflow.com/a/36610715/1216601