Javascript 如何在React中附加新元素(新节点)?

Javascript 如何在React中附加新元素(新节点)?,javascript,html,reactjs,frontend,Javascript,Html,Reactjs,Frontend,我想在单击按钮(加号)时附加一个新输入(新节点)。我通过appendChild(input)实现这一点。新的输入出现在屏幕上,我可以在Developer Tools>Elements中看到它,但React没有看到它 如何正确地执行此操作?我会避免“手动”操作DOM,因为它会更改DOM树并影响对账过程。这将导致react组件的完全重新呈现,并将显著影响性能 相反,我将使用状态变量ej。单击方法将在单击时更新的“可见” onClickPlus(event) { event.preventD

我想在单击按钮(加号)时附加一个新输入(新节点)。我通过
appendChild(input)
实现这一点。新的输入出现在屏幕上,我可以在Developer Tools>Elements中看到它,但React没有看到它


如何正确地执行此操作?

我会避免“手动”操作DOM,因为它会更改DOM树并影响对账过程。这将导致react组件的完全重新呈现,并将显著影响性能

相反,我将使用状态变量ej。单击方法将在单击时更新的“可见”

onClickPlus(event) {
   event.preventDefault();
   this.setState({visible: true})
}
如果需要在用户单击+按钮时呈现多个输入实例,最好是在状态中设置一个该实例的数组

constructor(props){
     super(props)
     this.state = {
        inputElements: []
     }
}

onClickPlus(event) {
   event.preventDefault();
   this.setState({
    inputElements: this.state.inputElement.concat(newElementId)
   })
}
并在渲染时迭代inputElement数组。这样,您还可以使用一个-按钮来消除输入字段


对于具有全局状态的动态响应表单,强烈建议使用redux表单字段数组。

使用状态!React不是jquery@麦克斯韦尔谢谢你,非常感谢!但是我认为你不能用“推”,mb“concat”?是的。Push不会返回新数组,但concat会返回。太棒了!
constructor(props){
     super(props)
     this.state = {
        inputElements: []
     }
}

onClickPlus(event) {
   event.preventDefault();
   this.setState({
    inputElements: this.state.inputElement.concat(newElementId)
   })
}