1. 程式人生 > >react-native ES5與ES6寫法對照表

react-native ES5與ES6寫法對照表

轉載連結:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/react-native-es5-and-es6-writing-table/

 對於很多初次學習React-Native人來說,都會為ES6語法所困惑,因為網上好多React-Native的Demo都是用ES5語法寫的。所以我剛開始也是學的ES5,對我來說ES5語法比較熟悉,但是看到ES6的語法剛開始就感覺怪怪的,相信對初次接觸ES6寫法的

人來說都會有這樣的感覺。今天我就整理下ES5跟ES6寫法的規範,希望會對你有所幫助。

一、模組引用

在ES5裡引入React的包基本通過require進行,程式碼如下:

    //ES5

var React=require('react-native');
var {
 Image,
 Text,
 propTypes
 }=React;

二、匯出單個類

//在ES6中用,import匯入

import React,{Image,Text,PropTypes} from 'react-native'

在ES5中,一般通過module.exports來匯出

//ES5

var MyComponent=React.createClass({
 .....
}),
module.exports=MyComponent;

//ES6

export default class MyComponent extends React.component{
 ....
}

引用的時候:

//ES5

var MyComponent=require('./MyComponent.js');
 

//ES6

import MyComponent from './MyComponent.js'

三、定義元件

在ES5中,通過React.createClass來定義一個元件類。如下所示:

//ES5

var MyComponent=React.createClass({
 render:function(){
 return (
 <Text>...</Text> 
 );
 }
})

在ES6裡,通過定義一個繼承自React.Component的class來定義一個元件:

//ES6

class MyComponent extends React.component{
 render(){
 return(
 <Text>...</Text>
 )
 }
}

四、給元件定義方法

從上面可以看出給元件定義方法不再用 函式名:function()的寫法,而是直接名字,方法的後面也不用用逗號(,)

五、定義元件的屬性型別和預設屬性

在ES5裡,屬性型別和預設屬性分別通過propTypes成員和getDefaultProps方法來實現

 //ES5 
var Video = React.createClass({
    getDefaultProps: function( ) {
        return {
            autoPlay: false,
            maxLoops: 10,
        };
    },
    propTypes: {
        autoPlay: React.PropTypes.bool.isRequired,
        maxLoops: React.PropTypes.number.isRequired,
        posterFrameSrc: React.PropTypes.string.isRequired,
        videoSrc: React.PropTypes.string.isRequired,
    },
    render: function( ) {
        return (
            <View /> );
    },
});
在ES6裡,可以統一使用static成員來實現
//ES6
class Video extends React.Component {
    static defaultProps = {
        autoPlay: false,
        maxLoops: 10,
    };  // 注意這裡有分號
    static propTypes = {
        autoPlay: React.PropTypes.bool.isRequired,
        maxLoops: React.PropTypes.number.isRequired,
        posterFrameSrc: React.PropTypes.string.isRequired,
        videoSrc: React.PropTypes.string.isRequired,
    };  // 注意這裡有分號
    render() {
        return (
            <View /> );
    } // 注意這裡既沒有分號也沒有逗號
}

六、初始化state

ES5如下:

//ES5 
var Video = React.createClass({
    getInitialState: function() {
        return {
            loopsRemaining: this.props.maxLoops,
        };
    },
})

ES6如下:

//ES6
class Video extends React.Component {
    state = {
        loopsRemaining: this.props.maxLoops,
    }
}

不過我們推薦更易理解的在建構函式中初始化(這樣你還可以根據需要做一些計算):
//ES6
class Video extends React.Component {
    constructor(props){
        super(props);
        this.state = {
            loopsRemaining: this.props.maxLoops,
        };
    }
}

七、把方法作為回撥提供

//ES5

var MyComponent=React.createClass({
	_example:function(){
		console.log('example')
	},
	render:function(){
	return(
		<View>
			<TouchableHighlight onPress={this._example}>	
			<Text>...</Text>
			</TouchableHighlight>		
		</View>
		)
	}
})

//在ES6下可以通過bind來繫結引用,或者使用箭頭函式(它會綁定當前的scope的this引用)來呼叫

class MyComponent extends React.component{
	_example(){
	console.log('example')
	}
	render(){
	return(
		<View>
			<TouchableHighlight onPress={this._example.bind(this) or  ()=>{this._example()}}>	

			<Text>...</Text>

			</TouchableHighlight>
		</View>
		)
	}
}

相關推薦

react-native ES5ES6寫法對照表

轉載連結:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/react-native-es5-and-es6-writing-table/  對於很多初次學習React-Native人來說,都會為ES6語

React/React NativeES5 ES6寫法對照表

BE left 代碼 compose 花括號 nbsp 它的 並且 ring 很多React/React Native的初學者都被ES6的問題迷惑:各路大神都建議我們直接學習ES6的語法(class Foo extends React.Component),然而網上搜到

Array對象的方法總結(ES5 ES6

判斷 否則 array 復制 indexof define 字符 red 三個參數 ES5 數組方法 1.Array.isArray() 方法用來判斷一個值是否為數組。它可以彌補typeof運算符的不足 2.valueOf() 方法返回數組本身 3.toString()

react事件繫結ES6寫法

文章參考 案例說明 import React from "react" import { NavBar, Button, Icon } from "antd-mobile" class Photegraph extends BaseComponent {

ES5ES6繼承的區別

1.ES5的繼承實質上是先建立子類的例項物件,然後再將父類的方法新增到this上(Parent.apply(this)). 2.ES6的繼承機制完全不同,實質上是先建立父類的例項物件this(所以必須先呼叫父類的super()方法),然後再用子類的建構函式修改t

ES5ES6的對比不同點

很多React/React Native的初學者都被ES6的問題迷惑:各路大神都建議我們直接學習ES6的語法(class Foo extends React.Component),然而網上搜到的很多教程和例子都是ES5版本的,所以很多人在學習的時候連照貓畫虎都不知道怎麼做

react-native 安裝環境配置(踩坑版,基於android studio)

一.安裝java環境 先去官網下載最近java 8版本,並進行安裝,注意:java 8之前的版本是不支援react native的,必須使用java 8,下載連結接:java jdk,下載完成之後進行環境變數配置,可以參考此連結進行配置,網頁:java8 環境變數配置,至

react-native最新的ES6基於頁面跳轉和傳值

引導頁面:最新的react-native頁面跳轉和傳值 /** * Sample React Native App * https://github.com/facebook/react-native */ import React, { Ap

ES5ES6中的陣列操作方法簡單介紹

許多同學在寫javascript程式碼的時候都習慣於使用順手和常用的方法,比如說在運算元組時習慣使用for,whlie迴圈,在列舉物件時,習慣使用for in,其實在ES5和ES6出來以後,有很多新的運算元組和物件的方法,這裡我們來重點看一下一些功能強大,但又往往被我們忽視的操作方法。 先來定義一個簡單的陣

es5es6的變數宣告和作用域的異同

在es6沒出來之前,js的作用域只有兩種頂層作用域和函式作用域,但是es6的出現,讓js的變數作用域有了新的存在形式:塊級作用域。 在瞭解塊級作用域之前,還是得先複習下es5的變數宣告與作用域。 變數宣告: 我們都知道js使用var關鍵字來宣告一個變數,如

全民K歌React Native實踐優化

PPT主題:全民K歌React Native實踐與優化 嘉賓:袁聰 1)React Native,H5,Native的優缺點 2)React Native優化——Bundle拆分 • 業務分離,按需載入,減少資源消耗 • 避免執行大量JavaScri

React Native原生JS層互動

最近在對《React Native移動開發實戰》一書進行部分修訂和升級。在React Native開發中,免不了會涉及到原生程式碼與JS層的訊息傳遞等問題,那麼React Native究竟是如何實現與原生的互相操作的呢? 原生給React Native傳參

javascript開發:ES5ES6的“this”深入分析

ES6中新增了箭頭函式這種語法,箭頭函式以其簡潔性和方便獲取this的特性,俘獲了大批粉絲兒 它也可能是面試中的寵兒, 我們關鍵要搞清楚 箭頭函式和普通函式中的this 一針見血式總結: 普通函式中的this: 1. this總是代表它的直接呼叫者, 例如 obj

如何在ES5ES6環境下處理函式預設引數

函式預設值是一個很提高魯棒性的東西(就是讓程式更健壯)MDN關於函式預設引數的描述:函式預設引數允許在沒有值或undefined被傳入時使用預設形參。ES5使用邏輯或||來實現眾所周知,在ES5版本中,並沒有提供的直接方法供我們我們處理函式預設值所以只能夠自己去增強函式的功能

React NativeES6寫法未定義錯誤

ES6, 即ECMAScript6, JavaScript的新標準, 書寫更加規範, 程式碼更加優雅. React Native推薦使用ES6的類寫法代替傳統的模組, 即使用extends React.Component代替React.createClass.

【轉】React NativeES5 ES6寫法對照

箭頭 dcom 卸載 compose 添加 sem this blank topic   很多React Native的初學者都被ES6的問題迷惑:各路大神都建議我們直接學習ES6的語法(class Foo extends React.Component),然而網上搜到的很

一個RNDemo(React Native 0.57.3 + ES6)實現(包含RN原生相互跳轉和通訊)

一個RNDemo(React Native 0.57.3 + ES6)實現(包含RN與原生相互跳轉和通訊) 原始碼下載地址 RNDemo(RN0.57.3+ES6) iOS原生專案(Objective-C)整合React Native(0.57.3版本)圖文教程–(1)基本環境

React NativeES6+ 和 ES5 語法比較

JS 更新快,所以基於 JS 的 RN 語法更新也挺大。在閱讀別人程式碼或專案開發時經常會碰到 EMACScript 新舊格式語法寫的程式,給我們的理解造成困擾。所以總結了一些新舊 JS 語法的對比。 1. 模組 1.1 引用 ES5 中,通過 req

React Native ES6寫法總結

1、每個介面,我們需要引入一些我們依賴的模組,比如“react”,“react-native”等等。使用的關鍵字就是import,基本寫法如下: import React,{ Component } from 'react'; import { View,

React Native 匯入獨立模組ES6寫法 將js檔案模組化方式

建立獨立的js檔案使用export關鍵字將自定義的元件匯出給外部使用,LoginModule 是自定義的匯出使用的類名字,extendsTextInputDemo,是繼承自真實的自定義元件類             export default class LoginMo