【问题标题】:Create a single state array for all items of flatlist. (React Native)为 flatlist 的所有项目创建单个状态数组。 (反应原生)
【发布时间】: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 和互联网上找到它,但找不到任何相关信息。

【问题讨论】:

    标签: javascript react-native


    【解决方案1】:
    const newValue = {"name" : uName};
    setAllAmen(prevArray => [...prevArray, newValue])
    

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

    【讨论】:

    • 这就像一个魅力。也感谢您的链接。解释使人们很容易理解正在发生的事情。干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多