Html 输入字段不为';使用value属性进行渲染时是否接收键盘事件?

Html 输入字段不为';使用value属性进行渲染时是否接收键盘事件?,html,ruby-on-rails,reactjs,react-rails,Html,Ruby On Rails,Reactjs,React Rails,我使用react rails gem与react JS for rails一起工作。 奇怪的是,如果我在呈现React组件时设置了一个非空值属性,那么输入字段将不会接收任何键盘事件 这不行 React.DOM.input type: 'text' className: 'form-control' value: "ABC" 但它是有效的 React.DOM.input type: 'text' className: 'form-control' value: "" 有

我使用react rails gem与react JS for rails一起工作。 奇怪的是,如果我在呈现React组件时设置了一个非空值属性,那么输入字段将不会接收任何键盘事件

这不行

React.DOM.input
  type: 'text'
  className: 'form-control'
  value: "ABC"
但它是有效的

React.DOM.input
  type: 'text'
  className: 'form-control'
  value: ""

有什么想法吗,伙计们?非常感谢

我已经回答了一个与此类似的问题,我不知道如何与您分享这个答案。所以我正在重新输入

在react中,组件仅在状态更改时渲染。每当组件的状态更改时,相应的组件都会渲染。这意味着我们正在用新值更新虚拟DOM,并将其附加到主DOM。这就是react的工作原理

对于输入文本字段,仅当用户输入某些值时,文本字段的值才会更改。在本例中,我们不更新任何状态,而是向文本字段的“value”属性添加新值。因此react不会呈现任何内容,并且不会向DOM添加新值。这是我们的行为。因此react不允许我们编辑输入文本字段

为了使react流程顺畅,我们可以使用on change回调功能来设置状态。在更改文本字段的值时,使用新值设置状态集,以便react渲染和DOM使用新值更新

我们可以使用valuelink属性为输入文本添加值,而不是使用回调函数。比如:

getInitialState: function(){
  return {
   value:'' //for empty text value
  }
}
对于值链接,我们必须给出状态值而不是变量值。要完全理解,请参阅:


无论何时在文本框中输入文本,状态都会更新,输入文本的值将设置为状态值。

第二个示例还应使输入为只读。查看更多信息是的,我知道了,谢谢MichelleThanks的详细回答,这对我很有帮助:)