我想制作一个由钩子控制的数组看起来像这个
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时,它只是在数组中添加新项,而不是更新原因[数字]值
const handleReasons = (checked, setChecked, number) => {
setChecked([!checked[number]]);
};
我像这个一样更改代码
它工作是有原因的[0]但是它不能控制数组中的其他元素。
-
您只需用新值再次设置数组,这就是我更新数组值时所做的。你可以看到更新的
console.log
值可能是视图而不是reRender,所以只需再次调用视图render或用它们的数据设置视图的密钥<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); };