KeyExtractorのプロップを使用するときにネイティブのflatlist
13106 ワード
反応ネイティブでFlatList component よくデータの長いリストをレンダリングするために動作します.これは、アイテムだけでスクロールリストでは、画面上に一度にすべてのデータ項目が表示されますレンダリングされます.
スクロール可能な項目を一覧表示する
スクロール可能なリストに項目を表示するには
このポストでは、使用する必要がありますどこで話しましょう
以下のデータ構造を考える.配列には10個の項目があり、それぞれの項目に2つのプロパティがあります.
上記のスニペットからのデバイスの画面の出力です.
デフォルトでは
を返します.
ここで、データの配列が各リスト項目を持つユニークなキーを含んでいるシナリオを考えましょう
などのカスタムキー名
上記の配列のデータに対して
を使用する場合
あなたが反応ネイティブの詳細については、チェックアウトReact Native category and Expo category 私のブログのページ.また、私の購読することができますnewsletter または私は新しい記事やチュートリアルを発行するたびに更新を取得するに従ってください.
スクロール可能な項目を一覧表示する
FlatList
, 必要なものを渡す必要があるdata
コンポーネントへのプロップ.The data
prop項目の配列を受け入れます.配列の各項目は、リスト内の単一の項目を表します.もう一つの必要なプロップはrenderItem
, は、data
とリストにそれをレンダリングします.このpropはレンダリングされるJSXを返す関数を受け入れます.スクロール可能なリストに項目を表示するには
FlatList
コンポーネントは、各項目にはid
. このキーはFlatList
コンポーネントVirtualizedList リストの項目の順序を追跡する.データ配列からのキーをkeyExtractor
プロップFlatList
コンポーネント.このポストでは、使用する必要がありますどこで話しましょう
keyExtractor
そして、それが必要でないどんなシナリオ.リストの一覧を表示する
以下のデータ構造を考える.配列には10個の項目があり、それぞれの項目に2つのプロパティがあります.
id
and title
. The id
各項目の一意キーです.const DATA_WITH_ID = [
{
id: 1,
title: 'quidem molestiae enim'
},
{
id: 2,
title: 'sunt qui excepturi placeat culpa'
},
{
id: 3,
title: 'omnis laborum odio'
},
{
id: 4,
title: 'non esse culpa molestiae omnis sed optio'
},
{
id: 5,
title: 'eaque aut omnis a'
},
{
id: 6,
title: 'natus impedit quibusdam illo est'
},
{
id: 7,
title: 'quibusdam autem aliquid et et quia'
},
{
id: 8,
title: 'qui fuga est a eum'
},
{
id: 9,
title: 'saepe unde necessitatibus rem'
},
{
id: 10,
title: 'distinctio laborum qui'
}
];
使用FlatList
コンポーネントをレンダリングしますtitle
以下の各項目のexport default function App() {
const renderList = ({ item }) => {
return (
<View style={styles.listItem}>
<Text style={styles.listItemText}>{item.title}</Text>
</View>
);
};
return (
<View style={styles.container}>
<FlatList data={DATA_WITH_ID} renderItem={renderList} />
</View>
);
}
上記のコンポーネントの結果は、エラーまたは警告なしで項目のリストを表示します.加えてFlatList
元のデータ構造が既にキーを含んでいるので、コンポーネントは各項目を識別するユニークなキーを必要としませんid
.上記のスニペットからのデバイスの画面の出力です.
keyExtractorプロップの使用
デフォルトでは
keyExtractor
propプロパティのチェックkey
and id
(その順序で).つのいずれかが元のデータ構造に存在するなら、それはFlatList
コンポーネント.この場合(前の例のように)明示的にkeyExtractor
プロップを返します.
FlatList
コンポーネントは警告をスローします.ここで、データの配列が各リスト項目を持つユニークなキーを含んでいるシナリオを考えましょう
key
nor id
. これは、名前のユニークなキープロパティが含まれますuserId
.const DATA_WITH_USER_ID = [
{
userId: 1,
title: 'quidem molestiae enim'
},
{
userId: 2,
title: 'sunt qui excepturi placeat culpa'
},
{
userId: 3,
title: 'omnis laborum odio'
},
{
userId: 4,
title: 'non esse culpa molestiae omnis sed optio'
},
{
userId: 5,
title: 'eaque aut omnis a'
},
{
userId: 6,
title: 'natus impedit quibusdam illo est'
},
{
userId: 7,
title: 'quibusdam autem aliquid et et quia'
},
{
userId: 8,
title: 'qui fuga est a eum'
},
{
userId: 9,
title: 'saepe unde necessitatibus rem'
},
{
userId: 10,
title: 'distinctio laborum qui'
}
];
リストをレンダリングするときは、この場合に警告が表示されますFlatList
コンポーネントは認識しませんuserId
としてkey
or id
元のデータ構造体の名前.などのカスタムキー名
userId
上の例ではkeyExtractor
propを用いる.一意のキー名とその値を取り出し、FlatList
コンポーネントは、その値に基づいて項目を追跡します.上記の配列のデータに対して
FlatList
コンポーネントと使用keyExtractor
propキーを取り出す<FlatList
data={DATA_WITH_ID}
renderItem={renderList}
keyExtractor={item => item.userId}
/>
警告は、この手順の後にも消えます.結論
を使用する場合
FlatList
データ配列が一意である場合、コンポーネントid
またはkey
プロパティを使用する必要はありませんkeyExtractor
明示的にprop.ただし、カスタムID名はkeyExtractor
prop独自のキーを抽出するコンポーネントを明示的に指示します.あなたが反応ネイティブの詳細については、チェックアウトReact Native category and Expo category 私のブログのページ.また、私の購読することができますnewsletter または私は新しい記事やチュートリアルを発行するたびに更新を取得するに従ってください.
Reference
この問題について(KeyExtractorのプロップを使用するときにネイティブのflatlist), 我々は、より多くの情報をここで見つけました https://dev.to/amanhimself/when-to-use-keyextractor-prop-in-react-natives-flatlist-489lテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol