使用值 属性 呈现时输入字段不接收键盘事件?

Input field doesn't receive keyboard events when rendering with value property?

我正在使用 react-rails gem 与 ReactJS 一起工作 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" 属性 添加新值。所以反应不会渲染任何东西并且新值不会添加到 DOM。这里我们违反了反应行为。所以 React 不允许我们编辑输入文本字段。

为了获得流畅的反应流程,它允许我们使用更改回调函数来设置状态。在更改文本字段的值时,状态设置为新值,因此反应渲染和 DOM 更新为新值。

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

getInitialState: function(){
  return {
   value:'' //for empty text value
  }
}

对于值link,我们必须给出状态值而不是变量值。完整理解请参考: https://facebook.github.io/react/docs/two-way-binding-helpers.html

每当我们在文本框中输入文本时,状态就会更新,输入文本的值将设置为状态值。