我正在开发一个 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":白巧克力棒}]
和红色天鹅绒相同。
我想要的是,如果我按第一个,我会得到 -> [{"name": Candy Bar}] 然后如果我按第二个,然后再按第三个 ->
[{“name”:糖果棒},{“name”:白巧克力棒},{“name”:红丝绒}]
。
但它是针对每个列表单独运行的。有人可以帮助我如何做到这一点吗?我对 native 和 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 native ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61267936/