欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么寫出React組件

這篇文章主要介紹“怎么寫出React組件”,在日常操作中,相信很多人在怎么寫出React組件問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么寫出React組件”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

公司主營業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出仁布免費(fèi)做網(wǎng)站回饋大家。

在Walmart Labs的產(chǎn)品開發(fā)中,我們進(jìn)行了大量的Code  Review工作,這也保證了我有機(jī)會(huì)從很多優(yōu)秀的工程師的代碼中學(xué)習(xí)他們的代碼風(fēng)格與樣式。在這篇博文里我會(huì)分享出我最欣賞的五種組件模式與代碼片。不過我首先還是要談?wù)劄槭裁次覀冃枰獔?zhí)著于提高代碼的閱讀體驗(yàn)。就好像你有很多種方式去裝扮一只貓,如果你把你的愛貓裝扮成了如下這樣子:

怎么寫出React組件

你或許可以認(rèn)為蘿卜青菜各有所愛,但是代碼本身是應(yīng)當(dāng)保證其可讀性,特別是在一個(gè)團(tuán)隊(duì)中,你的代碼是注定要被其他人閱讀的。電腦是不會(huì)在意這些的,不管你朝它們?nèi)舆^去什么,它們都會(huì)老老實(shí)實(shí)的解釋,但是你的隊(duì)友們可不會(huì)這樣,他們會(huì)把丑陋的代碼扔回到你的臉上。而所謂的Pretty  Components,應(yīng)該包含如下的特性:

  • 即使沒有任何注釋的情況下也易于理解

  • 比亂麻般的代碼有更好的性能表現(xiàn)

  • 更易于進(jìn)行Bug追溯

  • 簡潔明了,一句頂一萬句

SFC:Stateless Functional Component

我覺得我們在開發(fā)中經(jīng)常忽略掉的一個(gè)模式就是所謂的Stateless Functional  Component,不過這是我個(gè)人***的React組件優(yōu)化模式,沒有之一。我喜愛這種模式不僅僅因?yàn)樗鼈兡軌驕p少大量的模板代碼,而且因?yàn)樗鼈兡軌蛴行У靥岣呓M件的性能表現(xiàn)。總而言之,SFC能夠讓你的應(yīng)用跑的更快,長的更帥。

直觀來看,SFC就是指那些僅有一個(gè)渲染函數(shù)的組件,不過這簡單的改變就可以避免很多的無意義的檢測與內(nèi)存分配。下面我們來看一個(gè)實(shí)踐的例子來看下SFC的具體作用,譬如:

怎么寫出React組件

如果我們用正統(tǒng)的React組件的寫法,可以得出如下代碼:

export default class RelatedSearch extends React.Component {  constructor(props) {  super(props);  this._handleClick = this._handleClick.bind(this);  }  _handleClick(suggestedUrl, event) {  event.preventDefault();  this.props.onClick(suggestedUrl);  }  render() {  return (  Related Searches:  {this.props.relatedQueries.map((query, index) =>  className="related-search-link"  onClick={(event) =>  this._handleClick(query.searchQuery, event)}  key={index}>  {query.searchText}  )}  );  }  }

而使用SFC模式的話,大概可以省下29%的代碼:

const _handleClick(suggestedUrl, onClick, event) => {  event.preventDefault();  onClick(suggestedUrl);  };  const RelatedSearch = ({ relatedQueries, onClick }) =>  Related Searches:  {relatedQueries.map((query, index) =>  className="related-search-link"  onClick={(event) =>  _handleClick(query.searchQuery, onClick, event)}  key={index}>  {query.searchText}  )}  export default RelatedSearch;

代碼量的減少主要來源兩個(gè)方面:

  • 沒有構(gòu)造函數(shù)(5行)

  • 以Arrow Function的方式替代Render語句(4行)

實(shí)際上,SFC最迷人的地方不僅僅是其代碼量的減少,還有就是對于可讀性的提高。SFC模式本身就是所謂純組件的一種***實(shí)踐范式,而移除了構(gòu)造函數(shù)并且將_handleClick()這個(gè)點(diǎn)擊事件回調(diào)函數(shù)提取出組件外,可以使JSX代碼變得更加純粹。另一個(gè)不錯(cuò)的地方就是SFC以Arrow  Function的方式來定義了輸入的Props變量,即以O(shè)bject Destructring語法來聲明組件所依賴的Props:

const RelatedSearch = ({ relatedQueries, onClick }) =>

這樣不僅能夠使組件的Props更加清晰明確,還能夠避免冗余的this.props表達(dá)式,從而使代碼的可讀性更好。

***,我還想要強(qiáng)調(diào)下雖然我很推崇SFC,不過也不能濫用它。最合適使用SFC的地方就是之前你用純組件的地方。在Walmart  Labs中,我們使用Redux來管理應(yīng)用的狀態(tài),也就意味著我們絕大部分的組件都是純組件,也就給了SFC廣闊的應(yīng)用空間。一般來說,有以下特征的組件式絕對不適合使用SFC的:

  • 需要自定義整個(gè)組件的生命周期管理

  • 需要使用到refs

Conditional Components

JSX本身不支持if表達(dá)式,不過我們可以使用邏輯表達(dá)式的方式來避免將代碼切分到不同的子模塊中,大概是如下樣子:

render() {  {this.props.isGrid  ?  : }  }

這種表達(dá)式在二選一渲染的時(shí)候很有效果,不過對于選擇性渲染一個(gè)的情況很不友好,譬如如下的情況:

render() {  {this.props.isSoftSort  ?  : null  }  }

這樣子確實(shí)能起作用,不過看上去感覺怪怪的。我們可以選用另一種更加語義化與友好的方式來實(shí)現(xiàn)這個(gè)功能,即使用邏輯與表達(dá)式然后返回組件:

render() {  {!!this.props.isSoftSort && }  }

不過這一點(diǎn)也是見仁見智,每個(gè)人按照自己的喜好來就行了。

Arrow Syntax In React And Redux

ES2015里包含了不少可口的語法糖,我***的就是那個(gè)Arrow Notation。這個(gè)特性在編寫組件時(shí)很有作用:

const SoftSort = ({ hardSortUrl, sortByName, onClick }) => {  return (  Showing results sorted by both Relevance and {sortByName}.  href={`?${hardSortUrl}`}  onClick={(ev) => onClick(ev, hardSortUrl)}>  Sort results by {sortByName} only  );  };

該函數(shù)的功能就是返回JSX對象,我們也可以忽略return語句:

const SoftSort = ({ hardSortUrl, sortByName, onClick }) =>  Showing results sorted by both Relevance and {sortByName}.  href={`?${hardSortUrl}`}  onClick={(ev) => onClick(ev, hardSortUrl)}>  Sort results by {sortByName} only

代碼行數(shù)又少了不少咯!

另一塊我覺得非常適用Arrow Function的地方就是Redux的mapStateToProps函數(shù):

const mapStateToProps = ({isLoading}) => {  return ({  loading: isLoading,  });  };

需要注意的是,如果你返回的是Object,你需要包裹在大括號內(nèi):

const mapStateToProps = ({isLoading}) => ({  loading: isLoading  });

使用Arrow Function優(yōu)化的核心點(diǎn)在于其能夠通過專注于函數(shù)的重要部分而提升代碼的整體可讀性,并且避免過多的模板代碼帶來的噪音。

合理使用Object Destructing與Spread Attributes

大的組件往往受困于this.props過長的窘境,典型的如下所示:

render() {  return (  hidePriceFulfillmentDisplay=  {this.props.hidePriceFulfillmentDisplay}  primaryOffer={this.props.primaryOffer}  productType={this.props.productType}  productPageUrl={this.props.productPageUrl}  inventory={this.props.inventory}  submapType={this.props.submapType}  ppu={this.props.ppu}  isLoggedIn={this.props.isLoggedIn}  gridView={this.props.isGridView}  />  );  }

這么多的Props估計(jì)看著都頭疼,如果我們要將這些Props繼續(xù)傳入下一層,大概就要變成下面這個(gè)樣子了:

render() {  const {  hidePriceFulfillmentDisplay,  primaryOffer,  productType,  productPageUrl,  inventory,  submapType,  ppu,  isLoggedIn,  gridView  } = this.props;  return (  hidePriceFulfillmentDisplay={hidePriceFulfillmentDisplay}  primaryOffer={primaryOffer}  productType={productType}  productPageUrl={productPageUrl}  inventory={inventory}  submapType={submapType}  ppu={ppu}  isLoggedIn={isLoggedIn}  gridView={isGridView}  />  );  }

暫時(shí)不考慮unKnown Props,我們可以使用解構(gòu)賦值來實(shí)現(xiàn)這個(gè)功能:

render() {  const props = this.props;  return  }  Method Definition Shorthand

***這個(gè)方法不一定多有用,不過還是能讓你的代碼變得更加漂亮。如果你希望在Object中添加函數(shù),你可以使用ES2015 Method Definition  Shorthand來代替?zhèn)鹘y(tǒng)的ES5的表達(dá)式,譬如:

Link.defaultProps = {  onClick(event) {  event.preventDefault();  Logger.log(event);  }  };  如果你想設(shè)置一個(gè)默認(rèn)的空方法,也可以利用這種方式:  ProductRating.defaultProps = {  onStarsClick() {}  };

到此,關(guān)于“怎么寫出React組件”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

新聞名稱:怎么寫出React組件
URL鏈接:http://chinadenli.net/article6/gigiog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、云服務(wù)器品牌網(wǎng)站設(shè)計(jì)、外貿(mào)建站、品牌網(wǎng)站制作、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)