我有一个简单的文本字段(<input type="text"/>
)组件(子组件),它只应显示从其父组件获取的值。它是readonly
,用户无法更改该值。
我的问题是文本字段使用正确的值呈现一次,但是一旦父组件中的值发生更改,它就不会自动更新。虽然每次父组件更改其render
时都会调用state
方法,但该值保持不变(请检查您的控制台)。
这是展示我问题的jsfiddle。
任何想法如何解决这个问题?
答案 0 :(得分:3)
您应该使用value
道具代替defaultValue
。 Here's an updated jsfiddle.
答案 1 :(得分:0)
defaultValue
仅用于初始渲染。
(来源:https://github.com/facebook/react/issues/2764#issuecomment-67890726)
如果您将defaultValue
替换为value
,则可以使用http://jsfiddle.net/hnc7fobu/1/
(没关系,因为你有readOnly属性,你不会得到这个警告:
propType失败:您向没有value
处理程序的表单字段提供了onChange
道具。这将呈现一个只读字段。如果该字段应该是可变的,请使用defaultValue
。否则,请设置onChange
或readOnly
。)