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

在既不是反应函数组件也不是自定义反应钩子函数的函数中调用反应钩子“useState”

阎佑运
2023-03-14

我正在尝试使用react钩子创建一个悬停以显示div,我遇到了以下问题:

第69:31行:在函数“renderHideOptionalClauseTrigger”中调用React钩子“useState”,该函数既不是React函数组件,也不是自定义React钩子函数React钩子/钩子规则

搜索关键字以了解有关每个错误的更多信息。

以下是我的代码库:

import React, { useState, useEffect } from "react";

const renderHideOptionalClauseTrigger = () => {
  const [inHover, setHover] = useState(false);

  return (
    <div className="my-option-clause">
      <text>My Optional Loan Clause</text>
      <svg
        width="16"
        height="16"
        viewBox="0 0 16 16"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
        onMouseEnter={() => setHover(true)}
        onMouseLeave={() => setHover(false)}
      >
        <path fill-rule="evenodd" clip-rule="evenodd" d="..."/>
      </svg>
    </div>
  );
};


function LoanTerms(props) {
  const router = useRouter();
  const {
    currentLoan,
    getUserLoanRequest,
    updateUserLoanProposalRequest,
    user,
  } = props;

return (

<>
...
                  <Collapsible
                    trigger={renderOptionalClauseTrigger()}
                    classParentString="opt-data"
                    overflowWhenOpen="visible"
                    triggerWhenOpen={renderHideOptionalClauseTrigger()}
                  >

                    <div className="FlowCard__info-text">
                      Will be added verbatim as last clause to the loan
                      agreement. See{" "}
                      <Link className="orange-link" to="/product">
                        Product page
                      </Link>{" "}
                      for other clauses. (1000 characters)
                    </div>
<>

共有2个答案

罗毅
2023-03-14

为了呈现您的组件并在任何地方使用它,您必须在文件的末尾导出组件。在你的例子中,如果你想使用LoanTERN,你应该写导出默认的LoanTERN

唐永春
2023-03-14

React期望React组件以大写首字母命名。尝试RenderHideOptionalClauseTrigger而不是renderHideOptionalClauseTrigger

 类似资料:
  • 我试图在一个功能组件中调用一个API,它是一个反应挂钩,并基于结果,重新呈现组件的内容。下面是代码: 调用API的组件- 以下是功能: 我正在尝试获取状态数据,并根据数据重新渲染组件。这里处于调用外部API的操作中。 正在调用操作并成功获取数据,但我不确定为什么状态正在更新-我得到了以下错误- 在函数“setResults”中调用React钩子“useState”,该函数既不是React函数组件,

  • 问题:在函数“selectmenu”中调用了React钩子“React.useEffect”,该函数既不是React函数组件,也不是自定义React钩子函数 目标:我只想在单击按钮时挂载组件('Component DidMount/WillUnmount)(使用useffect()),而不是在加载文件(或整个组件)时挂载 实际目标:我想在单击时选择(或突出显示)一个文件(自定义)。但是,当用户在文

  • 我不熟悉react钩子和功能组件,我正在尝试在我的功能组件中使用useState,它会向我显示前面提到的错误 使用React、ant设计 参考以下输入链接描述在这里 错误: 在函数“deviceStatus”中调用React钩子“useState”,该函数既不是React函数组件,也不是自定义React钩子函数React钩子/钩子规则

  • 我正在跟随一个关于Udemy的反应课程。现在我达到了我的代码的这一点 编译后,我遇到了这个错误消息,我不知道该怎么做或意思

  • 我正在测试新的React钩子,我遇到了一个我无法修复(也无法理解)的行为。基本上,我有我的函数组件,在它里面有一个函数,我在其中设置钩子。这个函数被传递给一个呈现的组件,并使用props从最后一个呈现的组件调用它。太糟糕了,父级的钩子没有相应地更新! 我知道这似乎很难理解,但我在这里复制了这个错误https://codesandbox.io/s/vvwp33l7o5 我不知道,似乎我不能从组件外部

  • 问题内容: 随着React 中钩子的引入,现在的主要困惑是何时将函数组件与钩子和类组件一起使用,因为在钩子的帮助下,甚至可以在函数组件中获得和部分使用。所以,我有以下问题 钩子的真正优点是什么? 何时使用带有钩子的函数组件和类组件? 例如,带有钩子的功能组件不能像类组件那样帮助性能。他们没有执行就不能跳过重新渲染。还有其他原因吗? 提前致谢。 问题答案: 引入和其他特性(例如和)的思想是帮助减少必