2016-08-21 8 views
4

はそうのようなMobXの観察可能な配列を持つネイティブ反応:MobXでReact Native ListViewを使用するには?私はListViewコントロールを移入しようとしています

constructor(props) { 
     super(props) 
     var dataSource = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 }); 
     let dogs = props.store.dogs; 
     this.state = { dogs: dogs, dataSource: dataSource }; 
    } 

    render() { 

     var dogs = this.state.dogs; 
     var dataSource = this.state.dataSource.cloneWithRows(dogs); 

     return <ListView 
      dataSource={dataSource} 
      renderRow={this.renderRow} 
      /> 
    } 

しかし、コードを実行するとき、でrenderRow()が呼び出されることは決してありません。 cloneWithRows()メソッドは、行をクローンする方法を知らなかったのが好きです。

誰でもこれを成功させましたか? (そしてまた、それは時に犬の変更のリストの中の犬の名前は、リスト内のセルを再レンダリングすることを振る舞うようになって)

アップデート:私の記憶が正しければ、ここhttps://github.com/mobxjs/mobx/issues/476

答えて

1

の詳細情報を犬(笑)dogs.slice()をスライスする必要があります。そうしないと、ListViewは適切な配列として認識しません。 renderRowによってレンダリングされるコンポーネントも、非同期に呼び出すことができるため、オブザーバーコンポーネントである必要があります。

スライシングは、コンストラクタではなくrenderメソッドで行う必要があります。コレクションが変更されるたびにコンポーネントが構築されるときだけでなく、コンポーネントが構築されるときにもそれが必要になります。

も参照してください。https://github.com/mobxjs/mobx/issues/476

関連する問題