gpt4 book ai didi

javascript - React Native 可重用组件的设置状态问题

转载 作者:行者123 更新时间:2023-12-02 21:07:18 24 4
gpt4 key购买 nike

我尝试制作一张可重复使用的卡片,可以在其中增加不同元素的数量。我尝试了很多方法,但都没能成功。我使用平面列表来显示每张卡片。这是卡片:

export default function Card(props) {
return (
<View style={styles.card}>
<Text>{props.children}</Text>
<TouchableOpacity
onPress={() => {
console.log(props.number);
props.set(props.number+1)
}}
>
<FontAwesome size={30} name="plus" color="red" />
</TouchableOpacity>
</View>
);
}

这是我使用平面列表的地方:

export default function User() {
const [objects, setObjects] = useState([
{
id: "1",
name: "pants",
quantity: 0,
},
{
id: "2",
name: "t-shirt",
quantity: 0,
},
]);
return (
<SafeAreaView>
<FlatList

data={objects}
keyExtractor={(item) => item.id}
renderItem={({ item }) => (
<Card number={item.quantity} set = {setObjects}>
{item.name}
</Card>
)}
/>
</SafeAreaView>
);
}

最佳答案

这行得通吗?像这样调用 props.set:

props.set({
...props.item,
quanitity: props.item.quantity + 1,
})

:

<Card
item={item}
set={item => setObjects(objs => {
for (const obj of objs) {
if (obj.id === item.id) {
obj.quantity++
break
}
}
return objs
}}
>

如果可行,我仍然建议进行一些重构:

<Card
item={item}
add={() => setObjects(objs => {
for (const obj of objs) {
if (obj.id === item.id) {
obj.quantity++
break
}
}
return objs
}}
>

<TouchableOpacity onPress={props.add}>

关于javascript - React Native 可重用组件的设置状态问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61194062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com