我创建了一个更新控制输入
let uVal=this.state.editedVal?this.state.editedVal:this.props.eVal;
<input type="text" value={uVal} onChange={this.handleChange}/>
当我开始编辑该字段时,控件具有state或props值。删除后的第一个字母会再次显示整个props值,否则在其他情况下从不删除,可以使其完全可编辑。
有人可以让我知道怎么了吗
非常感谢您的帮助。
答案 0 :(得分:1)
那是因为您要进行真实检查。该三元的条件检查:
let uVal=this.state.editedVal?this.state.editedVal:this.props.eVal;
如果editedVal
属性不存在,并且editedVal
属性还包含其他范围,包括一个空字符串,则将返回false。因此,当您删除输入中的所有字符时,该值为空字符串并更改该三进制的结果。
通常,不建议在Javascript中依赖真实/虚假检查,因为它可能引起与您面临的问题完全一样的问题,以及许多其他难以调试的问题和怪异的行为。检查特定条件并使用===
。
请注意,您可以将当前的三元数缩短为:
let uVal = this.state.editedVal || this.props.eVal;
这将产生与您相同的结果。尽管您可能最终会更改真实性检查技术,以使新方法可能不相关。