React Hooks反转useState的语法-很奇怪

时间:2019-12-20 18:29:28

标签: reactjs syntax state react-hooks

因此,在过去的几个月中,我在一个特定项目上大量使用了React Hooks-这是我第一次看到这样的东西,并且想知道是否有人对发生的事情有了解释。

我有以下内容:

  const [ setSectionDefects, sectionDefects ] = useState([]);
  const { propertyDefects, propertySections } = props;

  useEffect(()=> {
    const defectsBySection = [];

    propertySections.map(propertySection => {
      const sectionId = propertySection.SectionId;
      const defectArray = [];
      const sectionObject = { id: sectionId, defects: defectArray };
      propertyDefects.map(propertyDefect => {
        if (propertyDefect.WosectionId == sectionId) {
          defectArray.push(propertyDefect);
        }
      })
      defectsBySection.push(sectionObject);
    }) 

   // setSectionDefects(defectsBySection);
   // sectionDefects(defectsBySection);
  }, []);

  console.log(setSectionDefects, sectionDefects)

当代码到达console.log语句时,它说'setSectionDefects'是一个数组,而'sectionDefects'是设置它的函数!

我很激动,我一生都无法弄清楚-正如我所了解的那样,语法首先是函数声明,然后是要设置的变量-

ie:const [setSectionDefects,sectionDefects] = useState([]);

还有其他人遇到吗?

2 个答案:

答案 0 :(得分:3)

useState中的第一项是状态本身,第二项是更新状态的函数。 https://reactjs.org/docs/hooks-reference.html#usestate

在您的情况下,只需滑动名称即可。

const [ sectionDefects , setSectionDefects] = useState([]);

答案 1 :(得分:0)

您用错误的方式破坏了数组。

应该是:

const [ sectionDefects, setSectionDefects ] = useState([]);