如何从父组件更新不受控制/只读的输入值?

How to update uncontrolled / readonly input value from parent component?

我有一个简单的文本字段 (<input type="text"/>) 组件(子组件),它应该只显示它​​从其父组件获得的值。它是 readonly,用户无法更改该值。

我的问题是,文本字段使用正确的值呈现一次,但一旦父组件中的值发生变化,它不会自行更新。尽管每次父组件更改其 state(检查您的控制台)时都会调用 render 方法,但该值保持不变。

这里有一个 jsfiddle 来演示我的问题。

有什么解决这个问题的想法吗?

您应该使用 value 属性而不是 defaultValueHere's an updated jsfiddle.

defaultValue 仅用于初始渲染。 (来源:https://github.com/facebook/react/issues/2764#issuecomment-67890726

如果您将 defaultValue 替换为 value,它会起作用:http://jsfiddle.net/hnc7fobu/1/

(没关系,因为你有 readOnly 属性,你不会收到这个警告: propType 失败:您在没有 onChange 处理程序的情况下向表单字段提供了 value 道具。这将呈现一个只读字段。如果该字段应该是可变的,请使用 defaultValue。否则,设置 onChangereadOnly。)