JSでこの種の構文を見たことがありますが、どのように機能するのか興味があります。 React FlatListのネイティブドキュメントでは、例はrenderItemを呼び出します。this._renderItemは、それがどの個々のリストアイテムで動作していることをどのように認識しますか? ?
別の言い方をすれば、フラットリストでは、この同じ呼び出しを行う別の方法は次のとおりです。
<FlatList <other props> renderItem={({item}) => (<MyListItem ....) />
RenderItemは、{item}が常に非構造化引数になる特別な小道具ですか?
data prop-data prop
を介してデータの配列をFlatListに渡す必要があります。これはthis.props.dataで利用できます。
renderItem prop-次に、renderItem
propを使用してコンテンツをレンダリングします。この関数には、オブジェクトである単一の引数が渡されます。関心のあるデータはitem key
にあるため、関数内からデストラクタリングを使用してアクセスできます。次に、そのデータを使用してコンポーネントを返します。
render() {
return (
<List>
<FlatList
data={this.state.data}
renderItem={({ item }) => (
// return a component using that data
)}
/>
</List>
);
}
@Balasubramanianが述べたことに加えて、renderItem
はcurrent item
およびList
コンポーネントをラッパーとして使用しているため、renderItem
関数内で 'ListItem'コンポーネントを使用してrender
をcurrent item
のデータは次のようになります。
renderItem={({ item, index }) => {
return (
<ListItem
key={index}
title={item.name}
onPress={ () => this.assetSelected(item) }
/>
);
}
<FlatList
data={['1', '2', '3', '4', '5', '6']}
renderItem={({ item }) => (
<Text>{ item }</Text>
)}
/>
出力1 2 3 4 5 6
<ListItem
data={this.state.data}
key={(item,index)=>index.toString()}
renderItem={({ item }) => <YourComponent item={item}> }
/>