2016-09-16 6 views
1

Reactネイティブでは、Realmを使用して、クエリを実行する場所のベストプラクティスは何ですか?つまり、初期状態のデータが必要な場合は、クエリをComponentWillMount内で実行する必要がありますか?または、単にComponentDidMountの後に状態を更新する必要がありますか?または、常にrender()内にクエリを配置する必要がありますか?または、シーンへのナビゲーションの前にクエリを実行し、結果を小道具として渡す必要がありますか?Realmのネイティブ・クエリー:クエリーをどこに配置するのがベスト・プラクティスですか?

基本的には、アプリのデータが必要な場合に基づいてレルムクエリを実行する必要があります。

これはあまり一般的ではありませんが、Realm/React Nativeのリソースはまだ多くはないようです。

答えて

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

+0

ああ、私はあなたがリンクされている例から見る...あなたが実際に、初期状態を設定するために、結果を使用して、コンストラクタでクエリを実行します。私はその権利を翻訳していますか? – fostertime

+1

正確には、 'ListView'データを更新したい場合、別の関数を使って' this.state'をクエリして更新して結果をレンダリングすることができます。 – leo7r

関連する問題