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

标签 javascript react-native

我正在开发一个 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/

相关文章:

javascript - angularjs 1中从 Controller 到Html的数据传输

javascript - Spring Boot 静态资源

javascript - 如何在数组对象中用空字符串替换未定义的值?

Javascript 变量声明在 head 和 body 中

ios - 类型错误 : undefined is not an object (evaluating '_rxjs.queueScheduler.constructor' )

javascript - 如何以不同的可见性百分比检查 FlatList 中项目的可见性?

javascript - 从导航 react native 调用功能

react-native - react-native-reanimated 构建失败

javascript - 在 "line.slice()"上获取 "karma init"错误

javascript - 增量 ID 并将数据推送为数字 - 谷歌 Firebase 和 React Native