首页 > 解决方案 > 分配的输入值未定义,因为永远不会触发 onChange

问题描述

我需要解决以下问题...

当用户注册成功时,他会被重定向到登录页面,其中填写了电子邮件输入字段并专注于密码字段。(电子邮件通过参数发送)

现在由于未触发 onChange 事件(因为未键入电子邮件),它的值返回未定义,因此登录失败。

有没有办法解决这个问题?

你可以在下面找到我的代码

const email = queryString.parse(location.search).email; // returns email correctly

以下是一个组件,因此每个属性都设置为name={props.name} value={props.value}etc

const handleChange = (name, value) => {
    setData((prev) => ({ ...prev, [name]: value }));
};

<InputField name="email" type="email" onChange={handleChange} value={email ? email : ""}

因此,当手动输入所有内容时,data按预期更新并且一切正常,但是当从注册重定向到登录并通过变量填写字段时email,数据中的电子邮件将是未定义的。

当电子邮件作为输入字段中的值放置时,有没有办法触发 onChange?

提前致谢!

标签: javascriptreactjsforms

解决方案


问题是handleChange没有得到和的name参数value

您可以尝试类似:(假设名称是定义的变量)

<InputField name="email" type="email" onChange={(e, {value}) => handleChange(name, value)} value={email ? email : ""}

推荐阅读