如何使用钩子控制数组



我想制作一个由钩子控制的数组看起来像这个

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);
    };
    

相关内容

  • 没有找到相关文章

最新更新