国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

簡談創建React Component的幾種方式

2024-05-06 15:37:56
字體:
來源:轉載
供稿:網友

前言

當我們談起React的時候,多半會將注意力集中在組件之上,思考如何將頁面劃分成一個個組件,以及如何編寫可復用的組件。但對于接觸React不久,還沒有真正用它做一個完整項目的人來說,理解如何創建一個組件也并不那么簡單。

在最開始的時候我以為創建組件只需要調用createClass這個api就可以了;但學習了ES6的語法后,又知道了可以利用繼承,通過extends React.component來創建組件;后來在閱讀別人代碼的時候又發現了PureComponent以及完全沒有繼承,僅僅通過返回JSX語句的方式創建組件的方式。

下面這篇文章,就將逐一介紹這幾種創建組件的方法,分析其特點,以及如何選擇使用哪一種方式創建組件。

幾種方法

1.createClass

如果你還沒有使用ES6語法,那么定義組件,只能使用React.createClass這個helper來創建組件,下面是一段示例:

var React = require("react");var Greeting = React.createClass({propTypes: {name: React.PropTypes.string //屬性校驗},getDefaultProps: function() {return {name: 'Mary' //默認屬性值};},getInitialState: function() {return {count: this.props.initialCount}; //初始化state},handleClick: function() {//用戶點擊事件的處理函數},render: function() {return <h1>Hello, {this.props.name}</h1>;}});module.exports = Greeting;

這段代碼,包含了組件的幾個關鍵組成部分,這種方式下,組件的props、state等都是以對象屬性的方式組合在一起,其中默認屬props和初始state都是返回對象的函數,propTypes則是個對象。這里還有一個值得注意的事情是,在createClass中,React對屬性中的所有函數都進行了this綁定,也就是如上面的hanleClick其實相當于handleClick.bind(this) 。

2.component

因為ES6對類和繼承有語法級別的支持,所以用ES6創建組件的方式更加優雅,下面是示例:

import React from 'react';class Greeting extends React.Component {constructor(props) {super(props);this.state = {count: props.initialCount};this.handleClick = this.handleClick.bind(this);}//static defaultProps = {// name: 'Mary' //定義defaultprops的另一種方式//}//static propTypes = {//name: React.PropTypes.string//}handleClick() {//點擊事件的處理函數}render() {return <h1>Hello, {this.props.name}</h1>;}}Greeting.propTypes = {name: React.PropTypes.string};Greeting.defaultProps = {name: 'Mary'};export default Greating;

可以看到Greeting繼承自React.component,在構造函數中,通過super()來調用父類的構造函數,同時我們看到組件的state是通過在構造函數中對this.state進行賦值實現,而組件的props是在類Greeting上創建的屬性,如果你對類的屬性和對象的屬性的區別有所了解的話,大概能理解為什么會這么做。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 东山县| 台东县| 建始县| 安西县| 上高县| 上林县| 太湖县| 山东| 札达县| 金乡县| 积石山| 虞城县| 上高县| 准格尔旗| 乌兰察布市| 西乌| 招远市| 马山县| 文安县| 浦北县| 抚州市| 曲松县| 吕梁市| 湟中县| 北宁市| 宣城市| 大丰市| 凭祥市| 阳江市| 巴楚县| 吉林省| 咸宁市| 洮南市| 板桥市| 东辽县| 邛崃市| 石家庄市| 资溪县| 谷城县| 湟中县| 琼结县|