ReactJS組件API

在本章中,我們將學習React組件API。這裏將討論三個方法:setState()forceUpdateReactDOM.findDOMNode()。 在新的ES6類中,必須手動綁定這個。在示例中使用this.method.bind(this)

設置狀態

setState()方法用於更新組件的狀態。 這種方法不會替代狀態,而只是添加對原始狀態的更改。

文件:App.jsx -

import React from 'react';

class App extends React.Component {
   constructor() {
      super();

      this.state = {
         data: []
      }

      this.setStateHandler = this.setStateHandler.bind(this);
   };
   setStateHandler() {
      var item = "setState..."
      var myArray = this.state.data.slice();
      myArray.push(item);
      this.setState({data: myArray})
   };
   render() {
      return (
         <div>
            <button onClick = {this.setStateHandler}>SET STATE</button>
            <h4>State Array: {this.state.data}</h4>
         </div>
      );
   }
}
export default App;

我們從一個空的數組開始。每次點擊按鈕,狀態將被更新。 如果點擊五次,將得到以下輸出。
ReactJS組件API

強制更新

有時可能想要手動更新組件。這可以使用forceUpdate()方法來實現。

文件:App.jsx -

import React from 'react';

class App extends React.Component {
   constructor() {
      super();
      this.forceUpdateHandler = this.forceUpdateHandler.bind(this);
   };
   forceUpdateHandler() {
      this.forceUpdate();
   };
   render() {
      return (
         <div>
            <button onClick = {this.forceUpdateHandler}>FORCE UPDATE</button>
            <h4>Random number: {Math.random()}</h4>
         </div>
      );
   }
}
export default App;

這個示例中,實現設置一個隨機數字,每次單擊按鈕時都會更新。
ReactJS組件API

查找Dom節點

對於DOM操作,可以使用ReactDOM.findDOMNode()方法。 首先,需要導入react-dom

文件:App.jsx -

import React from 'react';
import ReactDOM from 'react-dom';

class App extends React.Component {
   constructor() {
      super();
      this.findDomNodeHandler = this.findDomNodeHandler.bind(this);
   };
   findDomNodeHandler() {
      var myDiv = document.getElementById('myDiv');
      ReactDOM.findDOMNode(myDiv).style.color = 'red';
   }
   render() {
      return (
         <div>
            <button onClick = {this.findDomNodeHandler}>FIND DOME NODE</button>
            <div id = "myDiv">這是MyDiv的內容</div>
         </div>
      );
   }
}
export default App;

當點擊按鈕,myDiv元素的顏色變成紅色。如下所示 -
ReactJS組件API

注 - 自0.14更新以來,大多數舊的組件API方法都被棄用或刪除以適應ES6。