为平面列表的所有项创建单个状态数组.(React Native)



我正在开发一个react原生应用程序,在那里我出于某种目的使用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。但如果我按下另一个项目,它会生成一个新数组并给出结果。S0为平面列表的每个项目创建一个新的状态对象和数组,并为每个项目的不同数组推送结果。因此,如果我有以下内容:

平面图->

糖果吧白巧克力棒红丝绒

我先按一下,得到->[{"name": Candy Bar}],但如果我按一下白巧克力棒,就会得到[{"name" : White Chocolate Bar }],红丝绒也是如此。

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

但它正在为每个列表单独运行。有人能帮我怎么做吗?我是一个对原生和javascript做出反应并运行它来应对很多疑问的新手。尝试在StackOverflow和互联网上找到它,但无法获得任何相关信息。

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

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

最新更新