【问题标题】:Update text box, but a letter remain doesn't get deleted react js更新文本框,但一个字母仍然没有被删除反应js
【发布时间】:2018-08-20 02:36:28
【问题描述】:

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

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

<input type="text" value={uVal} onChange={this.handleChange}/>

当我开始编辑字段时,控件具有状态或道具值,当第一个字母被删除时,整个道具值再次显示为默认值,或者在其他情况下永远不会被删除,可以采取哪些措施使其完全可编辑。

谁能告诉我怎么了?

非常感谢您的帮助。

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    那是因为你在做一个真实的检查。这个三元的条件检查:

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

    如果editedVal 属性不存在,但如果editedVal 属性是一系列其他内容,包括空字符串,则返回false。因此,当您删除输入中的所有字符时,该值为空字符串并更改该三进制的结果。

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

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

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

    这将产生与您相同的结果。尽管您最终可能会更改真实性检查技术,因此新方法可能不相关。

    【讨论】:

    • '||'会给您与当前方法完全相同的错误。这不是解决您的问题的方法,我只是说它是您当前执行方式的简写。阅读以上所有内容,以了解您遇到问题的原因。您的解决方案必须围绕这一点展开。我不能给你实际的答案,因为这取决于你的组件的结构和实现方式。
    猜你喜欢
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 2022-01-10
    • 2022-11-02
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多