javascript 在react中动态添加多个输入字段

rdrgkggo  于 2022-10-30  发布在  Java
关注(0)|答案(4)|浏览(195)

我有一个包含三个输入元素和一个删除按钮的div。需要的是,当用户单击添加按钮时,它将动态添加此div,而当用户单击删除按钮时,它将删除此div。我可以使用以下方法动态添加一个输入元素(没有div容器)。

  • 在状态变量中创建一个数组。
  • 借助数组索引(如name0、name1)为动态输入字段指定名称

如何处理这么多的输入字段呢?当我将整个div作为一个单独的组件创建时,问题就更严重了。我使用的是基于类的组件。

handleChange=(event) =>
  {
    this.setState({[event.target.name]:event.target.values});
  }

render()
  {
    return(
      <div className="row">
        <button type="button" onClick={this.addElement}>Add</button>
        <div className="col-md-12 form-group">
          <input type="text" className="form-control" name="name" value={this.state.name} onChange={this.handleChange} />
          <input type="text" className="form-control" name="email" value={this.state.email} onChange={this.handleChange} />
          <input type="text" className="form-control" name="phone" value={this.state.phone} onChange={this.state.phone} />
          <button type="button" onClick={this.removeElement}>Remove</button>
        </div> 
      </div>
    )
  }
mklgxw1f

mklgxw1f1#

我会从配置的Angular 来处理这个问题,因为它的可扩展性更强。如果你想最终改变到像Formik或React Form这样的东西,它会让移动变得更容易。
有一个对象数组,你想把它转换成输入字段。你的主组件应该保持状态,不管<Form />组件是否显示,如果它是可见的,传入config和任何相关的处理程序。
您的表单组件应该维护输入的状态,并且当您提交它时,会将完成状态传递给父组件。
第一个

ia2d9nvy

ia2d9nvy2#

我希望这对你的问题有帮助。我做了一个有三个输入标签的子组件。
第一个
您也可以在下面的代码和框链接中查看代码。https://codesandbox.io/s/suspicious-heisenberg-xzchm

w8ntj3qf

w8ntj3qf3#

写下如何生成你想要的东西的每一个细节是有点困难的。所以我发现准备一个stackblitz链接让你看看它是如何做到这一点要容易得多,这个链接已经准备好了:
generating a dynamic div adding and removing by handling inputs state value

相关问题