Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不要在react native中更改第二和第三级别中的已签入_Javascript_Reactjs_React Native - Fatal编程技术网

Javascript 不要在react native中更改第二和第三级别中的已签入

Javascript 不要在react native中更改第二和第三级别中的已签入,javascript,reactjs,react-native,Javascript,Reactjs,React Native,为什么在下面的代码中,当发送ID时,第二级和第三级中选中对象的值不会更改为true或false!!! 但在第一轮中效果很好 const terms = [ { "term_id":21, "name":"Clothing", "checked":false, "children":[ { "t

为什么在下面的代码中,当发送ID时,第二级和第三级中选中对象的值不会更改为true或false!!! 但在第一轮中效果很好

const terms = [
   {
      "term_id":21,
      "name":"Clothing",
      "checked":false,
      "children":[
         {
            "term_id":24,
            "name":"Accessories",
            "checked":false,
            "children":[
               {
                  "term_id":25,
                  "name":"Scarf",
                  "checked":false,
                  "children":[
                     
                  ]
               }
            ]
         }
      ]
   }
]


  const setChecked = (data, id) => {
    let newTerms = [];
    data.map((item, key) => {
      if (item.children && item.children.length) {
        newTerms.push({
          term_id: item.term_id,
          name: item.name,
          checked: item.term_id == id ? !item.checked : item.checked,
          children: item.children ? item.children : [],
        });
        setChecked(item.children, id);
      } else {
        //item.checked = !item.checked;
        newTerms.push({
          term_id: item.term_id,
          name: item.name,
          checked: item.term_id == id ? !item.checked : item.checked,
          children: item.children ? item.children : [],
        });
      }
    });
    return newTerms;
  };
使用第一级ID=====>setChecked(术语,21)工作良好


但它不适用于第二级或第三级ID或更高版本====>setChecked(术语,25)

您必须将“newTerms”变量用作全局变量,因为函数的每次迭代都会为您的输出创建一个新的emtpy数组。

是的,这是正确的,但还有另一个问题,并且会添加到数组的数量中!此函数的输出:[{“term_id”:21,“name”:“衣服”,“checked”:false,“children”:[{“term_id”:24,“name”:“附件”,“checked”:false,“children”:[{“term_id”:25,“name”:“Scarf”,“checked”:false,“children”:[]}],{“term_id”:24,“name”:“Accessories”,“checked”:false,“children”:[“Scarf”,“checked”:false,“children”:{“term_id”:25,“name”:“Scarf”,“checked”:true}]