Reactjs InputText组件导致TypeError:e.在文本框中键入时目标为空(PrimeReact库,使用箭头函数)
我正在使用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) =>
<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))
}}