Reactjs 更新文本框,但不保留字母';不要被删除

Reactjs 更新文本框,但不保留字母';不要被删除,reactjs,Reactjs,我已经创建了一个更新控件输入 let uVal=this.state.editedVal?this.state.editedVal:this.props.eVal; <input type="text" value={uVal} onChange={this.handleChange}/> 让uVal=this.state.editedVal?this.state.editedVal:this.props.eVal; 当我开始编辑该字段时,该控件具有state或props值删除

我已经创建了一个更新控件输入

let uVal=this.state.editedVal?this.state.editedVal:this.props.eVal;

<input type="text" value={uVal} onChange={this.handleChange}/>
让uVal=this.state.editedVal?this.state.editedVal:this.props.eVal;
当我开始编辑该字段时,该控件具有state或props值删除时的第一个字母整个props值再次显示为默认值,或者在其他情况下,永远不会删除,可以做些什么使其完全可编辑

有人能告诉我出了什么事吗


谢谢你的帮助,非常感谢

那是因为你在做真实的检查。此三元结构的状态检查:

let uVal=this.state.editedVal?this.state.editedVal:this.props.eVal;
如果
editedVal
属性不存在,并且
editedVal
属性是一系列其他内容,包括空字符串,则将返回false。因此,当您删除输入中的所有字符时,该值是一个空字符串,并更改该值的结果

一般来说,不建议依赖Javascript中的truthy/falsy检查,因为它可能会导致与您所面临的问题完全相同的问题,以及许多其他难以调试的问题和奇怪的行为。检查具体情况并使用
==

作为旁注,您可以将当前三元数缩短为:

let uVal = this.state.editedVal || this.props.eVal;

这会得到和你一样的结果。尽管您可能最终会更改truthy检查技术,因此新方法可能不相关。

“| |”将给出与当前方法完全相同的错误。这不是对你的问题的修复,我只是说这是对你目前所做方式的简写。阅读以上所有内容,了解你的问题所在。你的解决方案必须围绕这一点。我无法给出实际答案,因为这将取决于组件的结构和实现方式。