React教程10: 组件Component API

React教程10: 组件Component API

 

这个教程讲述 React component API的使用,其中包括3个方法: setState(), forceUpdateReactDOM.findDOMNode(). 在新的 ES6 类里面,我们手动绑定 this。你可以在下面例子中看到我们使用 this.method.bind(this)

Set State

setState() 方法是用来更新组件的state状态的。这个方法不会替换state,但是会在原有state上面添加新的更新内容。

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;
      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;

我们从一个空的数列开始,当每一次我们点击按钮后,state就会更新。

点击5次后,会得到如下显示效果。

react-component-api-set-state

Force Update

当你需要手动更新component时候,请使用forceUpdate() 方法。

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;

我们这个例子设置了当按钮被点击后,产生的随机的数字。

react-component-api-force-update

Find Dom Node

对于 DOM 的操作,我们使用 ReactDOM.findDOMNode() 方法。首先我们需要import react-dom

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

class App extends React.Component {
   constructor() {
      super();
      this.getDomNodeHandler = this.findDomNodeHandler.bind(this);
   };

   findDomNodeHandler() {
      var myDiv = document.getElementById('myDiv');
      ReactDOM.findDOMNode(myDiv).style.color = 'green';
   }
	
   render() {
      return (
         <div>
            <button onClick = {this.findDomNodeHandler}>FIND DOME NODE</button>
            <div id = "myDiv">NODE</div>
         </div>
      );
   }
}

export default App;

当按钮被点击时候myDiv 元素会改成绿色。
react-component-api-find-dom-node

注意

React更新到 0.14 版本后,为了适应ES6标准,许多旧的 API 方法deprecated被删除或者降级了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注