当前位置: 首页 > 知识库问答 >
问题:

React Hooks逆转useState的语法-非常奇怪

楚德辉
2023-03-14

所以在过去的几个月里,我在一个特定的项目中使用了相当多的反应挂钩——这是我第一次看到这样的事情,我想知道是否有人对正在发生的事情有一个解释。

我有以下几点:

  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个答案

宋和颂
2023-03-14

您的阵列分解方式有误。

应该是:

const [ sectionDefects, setSectionDefects ] = useState([]);
曾宏毅
2023-03-14

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

在你的情况下,只要刷一下名字。

const [ sectionDefects , setSectionDefects] = useState([]);
 类似资料:
  • 我在代码上收到一条错误消息,以查找支付200美元佣金的员工的总工资。一旦输入了所有员工的总销售额,就应该打印出属于每个不同薪酬类别的员工销售额。下面是代码: 这是我收到的确切错误消息: 我相信这与双重转换有关,但我不确定这有什么问题?有没有人能帮我搞清楚哪里出问题了(它编译没有错误)?我也尝试过只有双精度(包括数组),但这并没有解决问题。

  • 我在React hook中遇到了一些非常奇怪的行为。在下面的代码中(https://codesandbox.io/s/purple-bush-nb5uy?file=/src/index.js): 单击时,我们在控制台中获得以下序列: 我希望: 因为我认为如果React找到setter并在重新渲染后执行以下代码,它会立即重新渲染。此外,我的React应用程序也是如此: 当运行以及值与状态变量的内容不

  • 问题内容: 在弄乱Eclipse中的自定义格式设置选项的同时,在示例代码之一中,我看到了如下代码: 我从未见过像这样使用过,并且我从事Java编程已有9年了!有谁知道你为什么要这么做?这样做的可能用例/好处是什么? 我看到的另一段代码,我认为这是一个非常有用的速记,因此我也在这里共享了它,它的作用很明显: 问题答案: 它是在Java 7中添加的。它称为try-with- resources 语句。

  • 在这个查询中,我从来没有得到side_table.pk的空值。如果删除coalesce或不使用key_table,则查询返回具有许多null side_table.pk的行,但如果添加coalesce join,则无法获得这些null。 似乎key_table和side_table没有任何共同之处,但结果非常奇怪。 另外,当我不使用side_table和WHERE子句时,count(*)的结果与c

  • 问题内容: 我通常对JOINS十分熟悉,但这是新的。 假设三个表(两个表的典型情况和第三个链接器表): (出于简化目的,我无法复制实际的结构,这不是我的代码。) 通常,要获得“谁在什么时候买了什么”的表格,我可以这样做: 但是我已经看到了这个: 这是什么?只是另一种语法,还是一种性能技巧? (它在SQLServer,FYI上,但是大概可以应用于其他…) 问题答案: 括号不会改变语义。子句的位置控制

  • 我查看了Java SE API 1.8所做的一些更改,当我查看新方法map.merge时,它展示了一个如何将其与下面一行一起使用的示例 我了解如何使用lambda表达式创建匿名函数接口,但这似乎是使用一个方法作为一个双重功能。我喜欢理解和使用晦涩难懂的java语法,但我在任何地方都找不到这一点。