1

これは、セクション リストでレンダリングする私のデータです

this.state = {
    data: [
    {
    title: "Popular Items",
    data: [
    {
    key: 1,
    name: "Briyani",
    image: "https://bootdey.com/img/Content/avatar/avatar6.png",
    uniqueID: 1,
    cnt: 0
    },
    {
    key: 2,
    name: "Chicken Lollypop",
    image: "https://bootdey.com/img/Content/avatar/avatar1.png",
    uniqueID: 2,
    cnt: 0
    },
    {
    key: 3,
    name: "Chicken kabab",
    image: "https://bootdey.com/img/Content/avatar/avatar7.png",
    uniqueID: 3,
    cnt: 0
    }]}]};

表示する断面リスト

<SectionList
sections={this.state.data}
renderSectionHeader={({ section }) => {
return (
<View style={styles.titleContainer}>
<Text style={styles.title}>{section.title}</Text>
</View>
);
}}
keyExtractor={item => item.uniqueID.toString()}
extraData={this.state}
renderItem={({ item }) => {
return (
<View style={styles.container}>
{item.cnt === 0 ? (
<Button
title="Add"
onPress={e =>
this.incrementItem(e, item.uniqueID, item.cnt)
}
/>
) : (
<View>
<Button
title="-"
onPress={e =>
this.decrementItem(e, item.uniqueID, item.cnt)
}
/>
<Text>
{item.cnt}
</Text>
<Button
title="+"
onPress={() =>
this.incrementItem(item.uniqueID, item.cnt)
}
/>
</View>
)}
</View>
);
}}
/>

最初はcnt = 0その条件に基づいて最初のボタンをレンダリングします。押した後、コンポーネントに基づいてカウントを正しくインクリメントし uniqueID、コンポーネントを再レンダリングします。新しくレンダリングされたボタンを押すと、別の値が返されますuniqueID。これを解決する解決策はありますか。前もって感謝します。

4

1 に答える 1

-1

関数event に引数を渡さなかったため、2つの引数しか渡しませんでしたが、2つの引数を渡しても関数が3つのパラメーターを期待している場合に関数が呼び出される理由がわかりませんでした。incrementItem

于 2019-11-27T09:31:56.777 に答える