【发布时间】:2020-07-30 17:41:21
【问题描述】:
我正在开发一个 React 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。但是如果我按下另一个项目,它会创建一个新数组并给出结果。 S0 为平面列表的每个项目创建一个新的状态对象,并创建数组,并将结果推入每个项目的不同数组。所以如果我有以下情况:
平面列表 ->
糖果棒 白巧克力棒 红色天鹅绒
我先按下我得到 -> [{"name": Candy Bar}],但如果我按下白巧克力棒,它会给出[{"name" : White Chocolate Bar }],Red Velvet 也是如此。
我想要的是,如果我先按我得到 -> [{"name" : Candy Bar}] 然后如果我按第二次,然后再按第三次->
[{"name" : Candy Bar} , {"name" : White Chocolate Bar}, { "name" : Red Velvet}]。
但它为每个列表单独运行。有人可以帮助我如何做到这一点吗?我对本机和 javascript 做出反应并运行它来解决很多疑问是相当新的。试图在 StackOverflow 和互联网上找到它,但找不到任何相关信息。
【问题讨论】: