反应钩子形式 - 类型错误:无法读取 L 处未定义的属性“拆分”(get.ts:6)

Posted

技术标签:

【中文标题】反应钩子形式 - 类型错误:无法读取 L 处未定义的属性“拆分”(get.ts:6)【英文标题】:React hook form - TypeError: Cannot read property 'split' of undefined at L (get.ts:6) 【发布时间】:2021-02-12 20:50:51 【问题描述】:

使用带有 react hook 表单和 reactstrap 的 create react app。它抛出上述错误。由于控制器中缺少名称属性,因此得到的答案很少。我没有使用控制器。它仅在构建后发生。

您可以在下面找到完整的代码。

 const  register, handleSubmit, errors  = useForm(
    mode: "onSubmit",
    reValidateMode: "onBlur",
  );
 <Form className="Login" onSubmit=handleSubmit(submitHandler)>
        <h1 className="mb-4">Log in</h1>
        <FormGroup className=errors.email ? "mb-2" : "mb-4">
          <Label for="email" hidden>
            Email
          </Label>
          <Input
            type="text"
            data-test="component-field"
            name="email"
            innerRef=register( required: true )
            id="email"
            placeholder="Email"
            defaultValue=email
            value=email
            onChange=(e) => setEmail(e.target.value)
          />
          errors.email && (
            <span className="text-danger mb-1 p-1">This field is required</span>
          )
        </FormGroup>" "
        <FormGroup className=errors.password ? "mb-2" : "mb-4">
          <Label for="password" hidden>
            Password
          </Label>
          <Input
            type="password"
            data-test="component-field"
            name="password"
            innerRef=register( required: true )
            defaultValue=password
            id="password"
            placeholder="Password"
            value=password
            onChange=(e) => setPassword(e.target.value)
            ref=register( required: true )
          />
          errors.password && (
            <span className="text-danger mb-1 p-1">This field is required</span>
          )
        </FormGroup>" "
        <Button size="sm" className="wb-primary-button font-weight-bold">
          Login
        `</Button>`

【问题讨论】:

我认为您的用法不正确,您在使用 react hook 表单时不应该真正看到 setState。我建议看一下 Controller 部分。 我只显示了表单代码。我的代码中有 setState 函数。我在第二个输入字段中使用了 ref,这是一个问题。感谢您的回复。 【参考方案1】:

从其作者的 GitHub 讨论中得到了答案。因为我使用了 reactstrap 库,所以我应该使用 innerRef 而不是引发错误的 ref 。在第二个 Input 元素中删除了 ref 然后它工作正常。

【讨论】:

以上是关于反应钩子形式 - 类型错误:无法读取 L 处未定义的属性“拆分”(get.ts:6)的主要内容,如果未能解决你的问题,请参考以下文章

Vue 错误:TypeError:无法读取 Proxy.render 处未定义的属性“标题”

打字稿错误:类型 'string' 不可分配给类型 '"allName" | `allName.$number.nestedArray`' 在反应钩子形式

无法读取 Object.eval [as updateDirectives] 处未定义的属性“性别”

无法读取 vuex 中 Store._callee 处未定义的属性“getProduct”(操作名称)

反应钩子:useState/context;无法读取未定义的属性“头像”/如何更新嵌套对象

模块构建失败:TypeError:无法读取 Object.module.exports 处未定义的属性“上下文”