Dom 操作
先前章節中我們知道在元件主要是與 Virtual Dom 的中間層進行互動,透過 React 事件的處理提升整體的效能,不過有時候我們也需要對實際 dom 的節點進行操作,例如第三方套件 (jQuery...)。
Refs and findDOMNode()
var App = React.createClass({
getInitialState: function() {
return {userInput: ''};
},
handleChange: function(e) {
this.setState({userInput: e.target.value});
},
clearAndFocusInput: function() {
// Clear the input
this.setState({userInput: ''}, function() {
// This code executes after the component is re-rendered
React.findDOMNode(this.refs.theInput).focus(); // Boom! Focused!
});
},
render: function() {
return (
<div>
<div onClick={this.clearAndFocusInput}>
Click to Focus and Reset
</div>
<input
ref="theInput"
value={this.state.userInput}
onChange={this.handleChange}
/>
</div>
);
}
});
上面在 input ref 屬性定義 "theInput",在需要操作實際 dom 時可透過 React.findDOMNode(this.refs.theInput) 取得。