javascript - 共享不需要的输入值的 HTML 表单
问题描述
我有一个非常令人沮丧的表单/输入问题,我正在使用 ReactJS。基本上我正在动态呈现一个或另一个表单,但是当输入输入到输入元素中时,该值也会以某种方式与另一个表单共享。
为了进一步解释,请想象 Form1 与 Input1A 和 Input1B,以及 Form2 与 Input2A 和 Input2B。如果我在 Input1A 中输入“hello”然后切换到显示 Form2,Input2A 中也会有“hello”。这是代码:
<Fragment>
{selectedAuth === "register" ? (
<form
className={styles.form}
onSubmit={this.registerHandler}
name="regForm"
>
<input
styles={inputStyle}
type="text"
placeholder="Full Name"
id="regName"
onChange={this.formFieldInputHandler}
/>
<input
styles={inputStyle}
type="email"
placeholder="Email Address"
id="regEmail"
onChange={this.formFieldInputHandler}
/>
<input
styles={inputStyle}
type="tel"
placeholder="Phone Number"
id="regPhone"
onChange={this.formFieldInputHandler}
/>
<input
styles={inputStyle}
type="password"
placeholder="Password"
id="regPasswordOne"
onChange={this.formFieldInputHandler}
/>
<input
styles={inputStyle}
type="password"
placeholder="Re-enter Password"
id="regPasswordTwo"
onChange={this.formFieldInputHandler}
/>
<button className={styles.submitButton} type="submit">
Register
</button>
</form>
) : (
<form
className={styles.form}
onSubmit={this.loginHandler}
name="loginForm"
>
<input
styles={inputStyle}
type="email"
placeholder="Email Address"
id="loginEmail"
onChange={this.formFieldInputHandler}
/>
<input
styles={inputStyle}
type="password"
placeholder="Password"
id="loginPassword"
onChange={this.formFieldInputHandler}
/>
<button className={styles.submitButton} type="submit">
Log In
</button>
</form>
)}
</Fragment>
这里是formFieldInputHandler
:
formFieldInputHandler = event => {
this.setState({ [event.target.id]: event.target.value });
};
任何帮助表示赞赏!
编辑:在这里想出来,复制粘贴我的答案 这与 React 如何重新渲染组件和协调有关。看看这里。
我需要做的就是在我的表单中添加一个不同的“key”属性,所以现在它看起来像:
<form
className={styles.form}
onSubmit={this.registerHandler}
key="regForm"
/>
和
<form
className={styles.form}
onSubmit={this.loginHandler}
key="loginForm"
/>
解决方案
好吧,我在发布后 2 秒就明白了。这与 React 如何重新渲染组件和协调有关。看看这里。
我需要做的就是在我的表单中添加一个不同的“key”属性,所以现在它看起来像:
<form
className={styles.form}
onSubmit={this.registerHandler}
key="regForm"
/>
和
<form
className={styles.form}
onSubmit={this.loginHandler}
key="loginForm"
/>
推荐阅读
- php - Laravel 多对多更新特定字段
- scala - Scala - 实现对象工厂模式
- android - 使用从 Json 获取的数据进行其他 Json 解析
- javascript - 有没有办法将 headerMenu 添加到组列?
- typescript - 使用 Enum 填充字段的通用工厂
- python - Python tkinter 从画布上获取颜色
- reactjs - next.js 应用程序需要 15-25 秒才能从谷歌应用程序引擎上的“冷”加载
- vb.net - 如何获得十个数字并显示最大和最小的数字?
- python - 如何根据顺序检测列表中的下一个任务
- mxgraph - 如何在 draw.io 中自动显示 mxGraphModel?