Javascript 为flatlist的所有项创建单个状态数组。(本地反应)
我正在开发一个react本机应用程序,其中我出于某种目的使用了Javascript 为flatlist的所有项创建单个状态数组。(本地反应),javascript,react-native,Javascript,React Native,我正在开发一个react本机应用程序,其中我出于某种目的使用了FlatList。我有一个通过FlatList显示的项目列表。该平面列表返回我制作的组件,并最终显示项目 const [allAmen , setAllAmen] = useState({}); let arr = []; const test = (uName) => { setAllAmen({...allAmen , "name" : uName }) } arr.push(allAmen); conso
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>
}}
/>
const[allAmen,setAllAmen]=useState({});
设arr=[];
常量测试=(uName)=>{
塞塔勒曼({…阿拉曼,“名字”:uName})
}
arr.push(阿拉曼);
控制台日志(arr);
阿门}
renderItem={({item})=>{
{
测试(项目名称)
}}
>
{item.name}
}}
/>
当我运行这个并按下列表中的一个项目时,它会在allAmen中设置对象并推入arr。但是如果我按下另一个项目,它会生成一个新数组并给出结果。S0为平面列表的每个项目创建一个新的状态对象和数组,并将结果推入每个项目的不同数组。因此,如果我有以下几点:
平面列表->
糖果棒
白巧克力棒
红丝绒
我先按一下,我得到->[{“name”:Candy Bar}]
,但如果我按一下白色巧克力,它会给出,[{“name”:White Chocolate Bar}]
,红色天鹅绒也是如此
我想要的是,如果我先按,我得到->[{“name”:Candy Bar}],然后如果我按第二个,然后再按第三个->
[{“name”:糖果条},{“name”:白巧克力条},{“name”:红丝绒}]
但它正在为每个列表单独运行。有人能帮我做这个吗?我是一个新手,对native和javascript做出反应,运行它时会有很多疑问。试图在StackOverflow和internet上找到它,但找不到任何相关内容
const newValue = {"name" : uName};
setAllAmen(prevArray => [...prevArray, newValue])
请参阅更多解释。
这很有魅力。谢谢你的链接。这一解释使人们很容易理解正在发生的事情。干杯