Reactjs InputText组件导致TypeError:e.在文本框中键入时目标为空(PrimeReact库,使用箭头函数)

Reactjs InputText组件导致TypeError:e.在文本框中键入时目标为空(PrimeReact库,使用箭头函数),reactjs,primereact,Reactjs,Primereact,我正在使用PrimeReact,我有一个人员数据表: 选择任何行时,将显示一个子面板,其中包含下拉列表、复选框和文本输入: 文本输入代码: <div className="p-col-4"> <InputText id="first-name" value={this.state.selectedEntity.firstName} onChange={(e) =>

我正在使用PrimeReact,我有一个人员数据表:

选择任何行时,将显示一个子面板,其中包含下拉列表、复选框和文本输入:

文本输入代码:

<div className="p-col-4">
    <InputText id="first-name"
               value={this.state.selectedEntity.firstName}
               onChange={(e) => this.setState(state => (state.selectedEntity.firstName = e.target.value))} />
</div>
复选框:

<div className="p-col-4">
    <Checkbox inputId="incognito"
              value="Incognito"
              checked={this.state.selectedEntity.incognito}
              onChange={(e) => this.setState(state => (state.selectedEntity.incognito = e.checked))} />
</div>

this.setState(state=>(state.selectedEntity.incognito=e.checked))}/>

编辑2:

我在这里创建了一个测试用例:


在我看来这是一个bug…

对于
InputText
onChange
事件处理程序,要接受给定表单的箭头函数,还必须在
setState(…)之前使用
e.persist()

所以不是

onChange={(e) =>
   this.setState((state) => (state.selectedEntity.firstName = e.target.value))
}
使用

请看

为了完整的讨论


PS:在撰写本文时,关于为什么
下拉列表和
复选框
组件不需要此选项的答案仍然悬而未决。

您可以共享
InputText
组件吗?(另外,在屏幕截图中显示这些名称可以吗?也许你想在网上共享之前隐藏这些名称?)
InputText
组件来自PrimeReact。。。是的,我会用假数据替换图像。当目标尚未“准备就绪”时,可能会在渲染时发生错误。也许在
this.setState()
周围添加一个if(e.target){}可能是一个快速修复方法?箭头函数适用于
下拉列表和
复选框。请参阅编辑。稳定的4.2.2也会发生。。。在我看来像个虫子->
onChange={(e) =>
   this.setState((state) => (state.selectedEntity.firstName = e.target.value))
}
onChange={(e) => {
   e.persist();
   this.setState((state) => (state.selectedEntity.firstName = e.target.value))
}}