深入探討前端框架react
摘要:
最近公司要做一個(gè)嵌套在app中的應(yīng)用,考慮著用Facebook的react來(lái)開發(fā)view,所以就研究了下。下面是我在開發(fā)中遇到的坑,希望能給你幫助。
項(xiàng)目地址:https://github.com/baixuexiyang/react
Issue:https://github.com/baixuexiyang/react/issues
歡迎star和fork!
react優(yōu)勢(shì):
•僅僅只要表達(dá)出你的應(yīng)用程序在任一個(gè)時(shí)間點(diǎn)應(yīng)該長(zhǎng)的樣子,然后當(dāng)?shù)讓拥臄?shù)據(jù)變了,React 會(huì)自動(dòng)處理所有用戶界面的更新。
•數(shù)據(jù)變化后,React 概念上與點(diǎn)擊“刷新”按鈕類似,但僅會(huì)更新變化的部分。
•React 都是關(guān)于構(gòu)建可復(fù)用的組件,使代碼復(fù)用、測(cè)試和關(guān)注分離(separation of concerns)更加簡(jiǎn)單。
注意點(diǎn):
1.加載組件的首字母大寫,比如:<HeaderComponent />
2.每一個(gè)組件的render最外層都要有一個(gè)包裹元素
3.this.props不能修改,this.state可以修改
4.頁(yè)面oclick事件在ios中的Safari不起效果,onClick={this.detail.bind(this, item)} 需要使用其他方式,比如jQuery的綁定事件
5.string轉(zhuǎn)換成html,dangerouslySetInnerHTML={{__html: ''}}
6.getInitialState:在組件掛載之前調(diào)用一次。返回值將會(huì)作為 this.state 的初始值。
getDefaultProps:在組件類創(chuàng)建的時(shí)候調(diào)用一次,然后返回值被緩存下來(lái)。如果父組件沒有指定 props 中的某個(gè)鍵,則此處返回的對(duì)象中的相應(yīng)屬性將會(huì)合并到 this.props (使用 in 檢測(cè)屬性)。
該方法在任何實(shí)例創(chuàng)建之前調(diào)用,因此不能依賴于 this.props。另外,getDefaultProps() 返回的任何復(fù)雜對(duì)象將會(huì)在實(shí)例間共享,而不是每個(gè)實(shí)例擁有一份拷貝。
組件的生命周期:
componentWillMount:
服務(wù)器端和客戶端都只調(diào)用一次,在初始化渲染執(zhí)行之前立刻調(diào)用。
componentDidMount:
在初始化渲染執(zhí)行之后立刻調(diào)用一次,僅客戶端有效(服務(wù)器端不會(huì)調(diào)用)。
componentWillReceiveProps:
在組件接收到新的 props 的時(shí)候調(diào)用。在初始化渲染的時(shí)候,該方法不會(huì)調(diào)用。
shouldComponentUpdate:
在接收到新的 props 或者 state,將要渲染之前調(diào)用。該方法在初始化渲染的時(shí)候不會(huì)調(diào)用,在使用 forceUpdate 方法的時(shí)候也不會(huì)。
如果確定新的 props 和 state 不會(huì)導(dǎo)致組件更新,則此處應(yīng)該 返回 false。
componentWillUpdate:
在接收到新的 props 或者 state 之前立刻調(diào)用。在初始化渲染的時(shí)候該方法不會(huì)被調(diào)用。
componentDidUpdate:
在組件的更新已經(jīng)同步到 DOM 中之后立刻被調(diào)用。該方法不會(huì)在初始化渲染的時(shí)候調(diào)用。
componentWillUnmount:
在組件從 DOM 中移除的時(shí)候立刻被調(diào)用。
小結(jié):
使用react開發(fā),所有html都寫在js文件里,所以開發(fā)起來(lái)不是很順暢。推薦一個(gè)chrome插件:React Developer Tools
對(duì)于React,有一些認(rèn)識(shí)誤區(qū),在此總結(jié)一下:
React不是一個(gè)完整的MVC框架,最多可以認(rèn)為是MVC中的V(View),甚至React并不非常認(rèn)可MVC開發(fā)模式;
React的服務(wù)器端Render能力只能算是一個(gè)錦上添花的功能,并不是其核心出發(fā)點(diǎn),事實(shí)上React官方站點(diǎn)幾乎沒有提及其在服務(wù)器端的應(yīng)用;
有人拿React和Web Component相提并論,但兩者并不是完全的競(jìng)爭(zhēng)關(guān)系,你完全可以用React去開發(fā)一個(gè)真正的Web Component;
React不是一個(gè)新的模板語(yǔ)言,JSX只是一個(gè)表象,沒有JSX的React也能工作。
以上所述是關(guān)于前端框架react相關(guān)知識(shí)的全部?jī)?nèi)容,希望大家喜歡。
- 深入理解JavaScript的React框架的原理
- 超級(jí)給力的JavaScript的React框架入門教程
- React.js入門學(xué)習(xí)第一篇
- 用ReactJS和Python的Flask框架編寫留言板的代碼示例
- React.js入門實(shí)例教程之創(chuàng)建hello world 的5種方式
- 基于React.js實(shí)現(xiàn)原生js拖拽效果引發(fā)的思考
- 再次談?wù)揜eact.js實(shí)現(xiàn)原生js拖拽效果引起的一系列問(wèn)題
- 在React框架中實(shí)現(xiàn)一些AngularJS中ng指令的例子
- JavaScript中rem布局在react中的應(yīng)用
- React實(shí)現(xiàn)雙向綁定示例代碼
相關(guān)文章
react的ui庫(kù)antd中form表單使用SelectTree反顯問(wèn)題及解決
這篇文章主要介紹了react的ui庫(kù)antd中form表單使用SelectTree反顯問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01React中映射一個(gè)嵌套數(shù)組實(shí)現(xiàn)demo
這篇文章主要為大家介紹了React中映射一個(gè)嵌套數(shù)組實(shí)現(xiàn)demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12react-native滑動(dòng)吸頂效果的實(shí)現(xiàn)過(guò)程
這篇文章主要給大家介紹了關(guān)于react-native滑動(dòng)吸頂效果的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用react-native具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06React?TypeScript?應(yīng)用中便捷使用Redux?Toolkit方法詳解
這篇文章主要為大家介紹了React?TypeScript?應(yīng)用中便捷使用Redux?Toolkit方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11React組件化的一些額外知識(shí)點(diǎn)補(bǔ)充
React是一個(gè)用于構(gòu)建用戶界面的JavaScript庫(kù),下面這篇文章主要給大家介紹了關(guān)于React組件化的一些額外知識(shí)點(diǎn),文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10React?Hooks項(xiàng)目實(shí)戰(zhàn)
React?Hooks是React?16.8版本引入的新特性,它使得在函數(shù)組件中也能夠使用狀態(tài)(state)和其他React特性,本文就來(lái)詳細(xì)介紹一下React?Hooks項(xiàng)目實(shí)戰(zhàn),感興趣的可以了解一下2023-11-11