亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

利用ES6語法重構React組件詳解

 更新時間:2017年03月02日 09:39:47   作者:VICHILY  
這篇文章主要介紹了利用ES6語法重構React組件的相關資料,文中通過示例代碼介紹的很詳細,對大家具有一定的參考借鑒價值,需要的朋友們下面來一起看看吧。

一、創(chuàng)建組件

ES6 class創(chuàng)建的組件語法更加簡明,也更符合javascript。內(nèi)部的方法不需要使用function關鍵字。

React.createClass

import React from 'react';
const MyComponent = React.createClass({
 render: function() {
 return (
  <div>以前的方式創(chuàng)建的組件</div>
 );
 }
});
export default MyComponent;

React.Component(ES6)

import React,{ Component } from 'react';
class MyComponent extends Component {
 render() {
 return (
  <div>ES6方式創(chuàng)建的組件</div>
 );
 }
}
export default MyComponent;

二、屬性

props propTypes and getDefaultProps

. 使用React.Component創(chuàng)建組件,需要通過在constructor中調(diào)用super()將props傳遞給React.Component 。另外react 0.13之后props必須是不可變的。

. 由于是用ES6 class語法創(chuàng)建組件,其內(nèi)部只允許定義方法,而不能定義屬性,class的屬性只能定義在class之外。所以propTypes要寫在組件外部。

. 對于之前的getDefaultProps方法,由于props不可變,所以現(xiàn)在被定義為一個屬性,和propTypes一樣,要定義在class外部。

React.createClass

import React from 'react';
const MyComponent = React.createClass({
 propTypes: {
 nameProp: React.PropTypes.string
 },
 getDefaultProps() {
 return {
  nameProp: ''
 };
 },
 render: function() {
 return (
  <div>以前的方式創(chuàng)建的組件</div>
 );
 }
});
export default MyComponent;

React.Component(ES6)

import React,{ Component } from 'react';
class MyComponent extends Component {
 constructor(props) {
 super(props);
 }
 
 render() {
 return (
  <div>ES6方式創(chuàng)建的組件</div>
 );
 }
}
MyComponent.propTypes = {
 nameProp: React.PropTypes.string
};
MyComponent.defaultProps = {
 nameProp: ''
};
export default MyComponent;

三、狀態(tài)

. 使用ES6 class語法創(chuàng)建組件,初始化state的工作要在constructor中完成。不需要再調(diào)用getInitialState方法。這種語法更加的符合JavaScript語言習慣。

React.createClass

import React from 'react';
const MyComponent = React.createClass({
 getInitialState: function() {
 return { data: [] };
 },
 
 render: function() {
 return (
  <div>以前的方式創(chuàng)建的組件</div>
 );
 }
});
export default MyComponent;

React.Component(ES6)

import React,{ Component } from 'react';
class MyComponent extends Component {
 constructor(props) {
 super(props);
 this.state = { data: [] };
 }
 
 render() {
 return (
  <div>ES6方式創(chuàng)建的組件</div>
 );
 }
}
export default MyComponent;

四、this

. 使用ES6 class語法創(chuàng)建組件, class中的方法不會自動將this綁定到實例中。必須使用 .bind(this)或者 箭頭函數(shù) =>來進行手動綁定。

React.createClass

import React from 'react';
const MyComponent = React.createClass({
 handleClick: function() {
 console.log(this);
 },
 render: function() {
 return (
  <div onClick={this.handleClick}>以前的方式創(chuàng)建的組件</div>
 );
 }
});
export default MyComponent;

React.Component(ES6)

import React,{ Component } from 'react';
class MyComponent extends Component {
 handleClick() {
 console.log(this);
 }
 
 render() {
 return (
  <div onClick={this.handleClick.bind(this)}>ES6方式創(chuàng)建的組件</div>
 );
 }
}
export default MyComponent;

也可以將綁定方法寫到constructor中:

import React,{ Component } from 'react';
class MyComponent extends Component {
 constructor(props) {
 super(props);
 this.handleClick = this.handleClick.bind(this);
 }
 handleClick() {
 console.log(this);
 }
 
 render() {
 return (
  <div onClick={this.handleClick}>ES6方式創(chuàng)建的組件</div>
 );
 }
}
export default MyComponent;

或者使用箭頭函數(shù) => :

import React,{ Component } from 'react';
class MyComponent extends Component {
 handleClick = () => {
 console.log(this);
 }
 
 render() {
 return (
  <div onClick={this.handleClick}>ES6方式創(chuàng)建的組件</div>
 );
 }
}
export default MyComponent;

五、Mixins

. 使用ES6語法來創(chuàng)建組件是不支持React mixins的,如果一定要使用React mixins就只能使用React.createClass方法來創(chuàng)建組件了。

import React,{ Component } from 'react';
var SetIntervalMixin = {
 doSomething: function() {
 console.log('do somethis...');
 },
};
const Contacts = React.createClass({
 mixins: [SetIntervalMixin],
 
 handleClick() {
 this.doSomething(); //使用mixin
 },
 render() {
 return (
  <div onClick={this.handleClick}></div>
 );
 }
});
export default Contacts;

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,如果有疑問大家可以留言交流。

相關文章

  • React點擊事件的兩種寫法小結

    React點擊事件的兩種寫法小結

    這篇文章主要介紹了React點擊事件的兩種寫法小結,具有很好的參考價值,希望對大家有所幫助。
    2022-12-12
  • react-router-domV6版本改版踩坑記錄

    react-router-domV6版本改版踩坑記錄

    這篇文章主要介紹了react-router-domV6版本改版踩坑記錄,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • React?中?setState?的異步操作案例詳解

    React?中?setState?的異步操作案例詳解

    這篇文章主要介紹了React中setState的異步操作案例詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一點點參考價值,感興趣的小伙伴可以參考一下
    2022-08-08
  • React this.setState方法使用原理分析介紹

    React this.setState方法使用原理分析介紹

    我們知道,在React中沒有像Vue那種數(shù)據(jù)雙向綁定的效果。而this.setState方法就是用來對數(shù)據(jù)進行更改的。而通過this.setState方法更改的數(shù)據(jù),會讓組件的render重新渲染,并且刷新數(shù)據(jù)
    2022-09-09
  • react使用axios實現(xiàn)上傳下載功能

    react使用axios實現(xiàn)上傳下載功能

    這篇文章主要為大家詳細介紹了react使用axios實現(xiàn)上傳下載功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • React中使用react-json-view展示JSON數(shù)據(jù)的操作方法

    React中使用react-json-view展示JSON數(shù)據(jù)的操作方法

    react-json-view是一個用于顯示和編輯javascript數(shù)組和JSON對象的React組件,本文給大家分享React中使用react-json-view展示JSON數(shù)據(jù)的操作方法,感興趣的朋友一起看看吧
    2023-12-12
  • 一文教會你用redux實現(xiàn)computed計算屬性

    一文教會你用redux實現(xiàn)computed計算屬性

    在computed中,可以定義一些屬性,即計算屬性,下面這篇文章主要給大家介紹了關于如何利用redux實現(xiàn)computed計算屬性的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • React組件通信實現(xiàn)流程詳解

    React組件通信實現(xiàn)流程詳解

    這篇文章主要介紹了React組件通信,在開發(fā)中組件通信是React中的一個重要的知識點,本文通過實例代碼給大家講解react中常用的父子、跨組件通信的方法,需要的朋友可以參考下
    2022-12-12
  • react中braft-editor的基本使用方式

    react中braft-editor的基本使用方式

    這篇文章主要介紹了react中braft-editor的基本使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • react源碼層探究setState作用

    react源碼層探究setState作用

    寫react的時候,踩了幾次坑發(fā)現(xiàn)setstate之后state不會立刻更新,于是判定setstate就是異步的方法,但是直到有一天,我想立刻拿到更新的state去傳參另一個方法的時候,才問自己,為什么setstate是異步的?準確地說,在React內(nèi)部機制能檢測到的地方,setState就是異步的
    2022-10-10

最新評論