操作DOM

​ 实际开发中,我们不可避免的会遇到需要操作真实DOM的操作。下面介绍几种操作DOM的方法。

1.使用refs

 <button ref='myBtn' onClick={this.handleBtnClick}>
  我是要div去触发的
</button>
<div onClick={this.handleClick}>我是div呀</div>
---------------------------------------------------
handleBtnClick: function() {
    alert('我是btn啊');
},
handleClick: function() {
    this.refs.myBtn.click();
},

2.使用ReactDOM.findDOMNode

const ReactDOM = require('react-dom');
-------------------------------------------------
<button id='myBtn' onClick={this.handleBtnClick}>
我是要div去触发的
</button>
<div onClick={this.handleClick}>我是div呀</div>
--------------------------------------------------
handleBtnClick: function() {
    alert('我是btn啊');
  },
handleClick: function(e) {
    const myBtn = document.querySelector('#myBtn');
    ReactDOM.findDOMNode(myBtn).click();
}

3.使用纯js

<button id='myBtn' onClick={this.handleBtnClick}>
我是要div去触发的
</button>
<div onClick={this.handleClick}>我是div呀</div>
--------------------------------------------------
handleBtnClick: function() {
    alert('我是btn啊');
},
handleClick: function(e) {
    const myBtn = document.querySelector('#myBtn');
    myBtn.click();
},

4.回调引用(callback ref)

es6中使用更加便捷

const _this = this;
-------------------------------------------
<button
  ref={function(e) {
    return (_this.myBtn = e);
  }}
  onClick={this.handleBtnClick}>
  我是要div去触发的
</button>
----------------------------------------------
<div onClick={this.handleClick}>我是div呀</div>
----------------------------------------------
handleBtnClick: function() {
    alert('我是btn啊');
},
handleClick: function() {
    this.myBtn.click();
},

5.使用事件代理e

<div onClick={this.handleClick}>我是div呀</div>
handleClick: function(e) {
    const myDiv = e.target;
    myDiv.style.backgroundColor = 'red';
}