2017-11-16 21 views
0

私の現在のユースケースでは、ScrollViewにアイテムを追加しています。状態にあるアイテムコレクションにアイテムを追加すると、すべてのアイテムが再レンダリングされることに気付きました。すべてのアイテムを再レンダリングせずにScrollViewにアイテムを追加する

解決方法はありますか? 現在の実装はScrollViewでなければならないので、FlatListまたはリストの他の実装への変更は無関係です。

<View style={{flex: 1}}> 
    <ScrollView> 
     <TouchableWithoutFeedback accessible={false}> 
     <View style={{flexDirection: 'column', alignItems: 'center'}}> 
     {this.state.items.map((item, key) => 
     (
      <Flag country={item} key={key} /> 
     ))} 
     </View> 
     </TouchableWithoutFeedback> 
    </ScrollView> 
    </View> 

はありがとう

答えて

0

私はFlatListを使用して代わりにScrollViewをレンダリングする状態の集合からマップを使用してにチェックします。基本的に、this.state.itemsを更新すると、その状態に関係するものの再レンダリングが呼び出されます。

私はこのリソースを使ってきたし、それはあなたがあなたのコードをアップグレード助ける必要があります。

http://matthewsessions.com/2017/05/15/optimizing-list-render-performance.html

+0

私はFlatListの承知していますが、私はそれがScrollViewにする必要があり述べたように、私ができる任意の方法がありますScrollView内のすべてのアイテムを再レンダリングせずにアイテムを追加しますか? – Amaros

+0

申し訳ありません。私は実際にFlatListを使う代わりにFlatListの "コンセプト"を使うことを意味していました。言い換えれば、リサイクル可能な子ビューを作成することです。 – ReyHaynes

関連する問題