【问题标题】:cannot update existing input compoent value in ReactJS无法更新 ReactJS 中现有的输入组件值
【发布时间】:2015-10-19 06:45:32
【问题描述】:

我有一个项目有一个使用 ReactJS 的东西列表,请参阅JSBIN,并想用关键字搜索这些东西。

TEST:在搜索框中输入mi搜索ID,this.state.data被过滤了但是输入值不更新正确(gary不应该出现)。

我已经检查过问题是输入组件

<input type="text" defaultValue={this.props.data.userid} ref="userid" disabled name="userid" />

第一次使用 defaultValue 进行渲染,但即将进行的渲染不会再次更改其值;但是如果改成value,就不能修改了

问题:如何通过最少的代码修改使搜索权同时使所有输入可编辑?

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    您的 JSBin 给了我奇怪的输出(而且是我不懂的语言)。 但是,您的问题似乎在 handleChange() 内部,它在您的 Forms 组件内部。如果要更新页面内容,handleChange 内部的某处应该有一个this.setState 函数。在当前设置中,handleChange() 仅执行 console.log,但不会重新渲染..

    【讨论】:

    • handleChange() 用于 UserForm &lt;input&gt; 组件,它不是问题的核心部分;代替this.setState,有一个this.replaceState,它也进行渲染。
    • 我明白了。 React 基本上为您提供了两种选择:您要么不渲染输入值,要么让表单处理所有事情。或者,您根据 state 或 props 设置值,但在这种情况下,react 需要您定义一个 onChange 处理程序,以确保在发生更改的情况下,值会在下一次渲染中更新。如果您为输入字段提供值,但没有 onChange 处理程序,则 react 会将输入字段设为只读。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2012-09-20
    • 2021-03-28
    • 2012-09-03
    • 1970-01-01
    相关资源
    最近更新 更多