我想制作一个由钩子控制的数组 看起来像这样
const [reasons, setReasons] = useState([false, false, false, false]);
如何使用setReasons切换每个布尔值
如果我喜欢这样
onPress={() =>
handleReasons(reasons, setReasons, number)
}
const handleReasons = (checked, setChecked, number) => {
setReasons([
,
{
id: number,
value: !reasons,
},
]);
};
它只是不起作用
如果我这样改变钩子
const [reasons, setReasons] = useState([]);
当我调用handleReasons时,它只是在数组中添加新项,而不是更新原因[number]值
const handleReasons = (checked, setChecked, number) => {
setChecked([!checked[number]]);
};
我这样更改代码
它由于某些原因而起作用[0] 但是它无法控制数组中的其他人。
答案 0 :(得分:0)
您只是再次使用新值设置了数组,这就是我更新数组值时的操作。您可以console.log
值来查看更新的内容可能是视图未重新渲染,因此只需再次调用视图渲染或使用其中的数据设置视图键即可。
<View key="(id) (value)" >Row data<View>
代码示例
const handleReasons = (id, newValue) => {
let updateArray = reasons;
for (let i = 0; i < updateArray.length; i++) {
let item = updateArray[i];
if (item.id === id) {
item.value = newValue;
break;
}
}
setReasons(updateArray);
};