如何在 ReactJS 中单击时获取输入文本值

新手上路,请多包涵

我正在学习 ReactJS,我想了解如何使用简单的 onclick 事件在 ReactJS 中获取输入文本值。我已经按照那里的教程进行操作,虽然我能够获得文本输入的参数。但不知何故,我无法获得它的价值。我知道这是一个愚蠢的问题,但我正在努力解决这个问题。请检查我的代码,让我知道它有什么问题。

 var MyComponent = React.createClass({
  handleClick: function() {
    if (this.refs.myInput !== null) {
        var input = this.refs.myInput;
            var inputValue = input.value;
      alert("Input is", inputValue);
    }
  },
  render: function() {
    return (
      <div>
        <input type="text" ref="myInput" />
        <input
          type="button"
          value="Alert the text input"
          onClick={this.handleClick}
        />
      </div>
    );
  }
});

ReactDOM.render(
  <MyComponent />,
  document.getElementById('container')
);

这是相同的jsfiddle: jsfiddle链接

原文由 Rajat Vij 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 497
2 个回答

首先,您不能传递给 alert 第二个参数,而是使用串联

alert("Input is " + inputValue);

Example

但是,为了更好地从输入中获取值,请使用这样的状态

 var MyComponent = React.createClass({
  getInitialState: function () {
    return { input: '' };
  },

  handleChange: function(e) {
    this.setState({ input: e.target.value });
  },

  handleClick: function() {
    console.log(this.state.input);
  },

  render: function() {
    return (
      <div>
        <input type="text" onChange={ this.handleChange } />
        <input
          type="button"
          value="Alert the text input"
          onClick={this.handleClick}
        />
      </div>
    );
  }
});

ReactDOM.render(
  <MyComponent />,
  document.getElementById('container')
);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="container"></div>

原文由 Oleksandr T. 发布,翻译遵循 CC BY-SA 4.0 许可协议

有两种方法可以做到这一点。

  1. 在包含文本输入的构造函数中创建一个状态。在每次更新状态的输入框上附加一个 onChange 事件。然后 onClick 你可以提醒状态对象。

  2. handleClick: function() { alert(this.refs.myInput.value); },

原文由 erichardson30 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进