React中的getElementById

The*_*orm 16 javascript null getelementbyid reactjs

此刻出现此错误:

Uncaught TypeError: Cannot read property 'value' of null

我在下面的渲染函数中调用它:

<input type="submit" className="nameInput" id="name" value="cp-dev1" onClick={this.writeData}/>
Run Code Online (Sandbox Code Playgroud)

我也试过在这里调用它

componentWillMount: function(){
        var name = document.getElementById('name').value;
      },
Run Code Online (Sandbox Code Playgroud)

如何获取输入文本字段的id并读取该值并确保它不为空?

我认为DOM在我尝试读取元素后加载,因此它为空

Shu*_*tri 14

您需要在componentDidMount生命周期中拥有您的函数,因为这是在DOM加载时调用的函数.

利用refs访问DOM元素

<input type="submit" className="nameInput" id="name" value="cp-dev1" onClick={this.writeData} ref = "cpDev1"/>

  componentDidMount: function(){
    var name = React.findDOMNode(this.refs.cpDev1).value;
    this.someOtherFunction(name);
  }
Run Code Online (Sandbox Code Playgroud)

有关如何访问React中的dom元素的更多信息,请参阅此答案

  • 这是现在的遗产! (5认同)
  • 据说基于字符串的引用很可能在不久的将来被弃用,取而代之的是基于回调的语法:`ref = {input => this.input = input}` (2认同)
  • 在 React 文档页面中,它说“...使用 findDOMNode(),但不鼓励这样做。”。请注意它。https://reactjs.org/docs/refs-and-the-dom.html (2认同)