如何使用钩子控制数组

时间:2020-03-02 02:56:06

标签: react-native react-hooks

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

 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] 但是它无法控制数组中的其他人。

1 个答案:

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