gpt4 book ai didi

javascript - 为 flatlist 的所有项目创建一个状态数组。 ( react 原生)

转载 作者:行者123 更新时间:2023-12-04 10:12:16 27 4
gpt4 key购买 nike

我正在开发 native 应用程序,我正在使用 FlatList出于某种目的。我有一个通过 FlatList 显示的项目列表. FlatList 返回一个我制作的组件,最终显示项目。

const [allAmen , setAllAmen] = useState({});
let arr = [];
const test = (uName) => {
setAllAmen({...allAmen , "name" : uName })
}
arr.push(allAmen);
console.log(arr);

<FlatList
data={amens}
keyExtractor={(amen) => amen.id}
renderItem={({item}) => {
<TouchableOpacity
onPress={() => {
test(item.name)
}}
>
<Text>{item.name}</Text>
</TouchableOpacity>
}}
/>

当我运行它并按下列表中的一项时,它会在 allAmen 中设置对象并插入 arr。但是如果我按下另一个项目,它会创建一个新数组并给出结果。对于 flatlist 的每个项目,S0 都会创建一个新的状态对象并创建数组,并将结果推送到每个项目的不同数组中。所以如果我有以下几点:

平面列表 ->

糖果条
白巧克力棒
红色天鹅绒

我先按下我得到 -> [{"name": Candy Bar}]但是如果我按下白巧克力棒,它会给出, [{"name" : White Chocolate Bar }]和 Red Velvet 一样。

我想要的是,如果我先按我得到 -> [{"name": Candy Bar}] 然后如果我按第二个然后按第三个-> [{"name" : Candy Bar} , {"name" : White Chocolate Bar}, { "name" : Red Velvet}] .

但它为每个列表单独运行。有人可以帮助我如何做到这一点吗?我对原生和 javascript 使用react并将其运行到很多疑问中是相当新的。试图在 StackOverflow 和互联网上找到它,但无法获得任何相关信息。

最佳答案

const newValue = {"name" : uName};
setAllAmen(prevArray => [...prevArray, newValue])

查看更多解释。 https://stackoverflow.com/a/58556049/905494
https://stackoverflow.com/a/54677026/905494

关于javascript - 为 flatlist 的所有项目创建一个状态数组。 ( react 原生),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61267936/

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