【发布时间】:2017-02-04 19:04:03
【问题描述】:
defaultValue 仅在页面第一次加载时有效。再次加载同一页面但使用不同的props 时,不受控制的输入字段不会填充来自新props 的新值。似乎没有办法在反应中为不受控制的输入字段设置值?
我正在使用 Material-UI,我不受控制的输入字段看起来像这样:
<TextField
ref={input => this.dataNode.Name = input}
defaultValue={this.props.dataNode.Name}
floatingLabelText="Name"
/>
似乎在输入中添加一个随机的key 可以解决问题,但是,我真的需要为每个不受控制的输入引入一个随机键吗?
<TextField
key={some_random_thing}
ref={input => this.dataNode.Name = input}
defaultValue={this.props.dataNode.Name}
floatingLabelText="Name"
/>
【问题讨论】:
-
你的一些代码可能有用:)
-
你能解释一下吗:
When loading the same page again??你是怎么做的?因为如果更新父组件中的值,子组件肯定会更新。 -
想想导航菜单。所有菜单项都链接到同一页面,但传入了不同的
props。在我的情况下,如果我单击另一个链接到另一个页面,然后返回到表单,则该值会正确填充,但是,如果我导航到同一页面,即使使用新的props,表单仍然具有旧值。 -
也许我不应该说页面,比如说组件。
-
在受控(使用
value而不是defaultValue)输入的情况下,不存在这样的问题。但是,在我的情况下,我需要使用不受控制的输入。
标签: reactjs