React框架 坑及解決方法


原始地址:http://h5shop.org/article/50/

React原則

React不多做介紹,就是Facebook的一個開源JS框架,專注的層面為View層,不包括數據訪問層或者那種Hash路由(不過React 有插件支持),與Angularjs,Emberjs等大而全的框架不同,React專注的中心是Component,即組件,React認為一切頁面元 素都可以抽象成組件,比如一個表單,或者表單中的某一項。

常用技術要點

props

每一個組件都有可變與不可變的屬性,props就是不可變的屬性,當props改變時,組件的繪制方法不會被調用。

states

states就是組件的可變屬性,states的改變會觸發組件的render函數,react與其他mvvm框架的最大的不同點就是,react 組件可以想象成一個狀態機,狀態的改變會重繪UI,然后根據 dom diff 算法來繪制UI,而其他的mvvm框架則是對js對象的dirty check(Angularjs)或者defineProperty時指定的回調函數(Emberjs),因此,狀態機制與dom diff的存在聲稱React更快。

我們在設計React組件時如何靈活的運用props與state是一個非常關鍵的要點。

refs

refs這個點主要用在上級組件調用下級組件的場景,這個場景非常多見。

componentDidMount

組件UI渲染完畢后調用,常用在這種業務場景:調用ajax獲得數據后,渲染UI。

state的改變會觸發render

正如上文中所說,React組件是一個一個狀態機,state的改變會改變狀態,會觸發重繪,對於state的設計是對React組件設計的關鍵。

各種坑

觸摸事件

React中的觸摸事件僅用三種,touchstart, touchend, touchend,可是這種會有問題,有時候我需要滾動頁面的時候,很容易觸發某一個元素的touchend事件,為此筆者找了一個React第三方組件,React-tappable

還無意中發現一個Android與iOS的不同之處

input在disable且readonly之后,onClick會在iOS上觸發不起來,onTouchEnd又會在Android上把鍵盤彈出來,這邊筆者做了個Hack,iOS下用onTouchEnd,Android下用onClick,就正常了。

高級技術要點

mixin

曾經跟一個朋友討論,封裝utils模塊為純js模塊好還是React式的模塊好的問題,他給我了一個概念,React mixin,本來自己在開發中確實寫了很多可復用的小組件,但由於沒有過多的了解React周邊的相關知識,因此忽略了React mixin,筆者認為以后可以探究一下這個技術點。

React原則

React不多做介紹,就是Facebook的一個開源JS框架,專注的層面為View層,不包括數據訪問層或者那種Hash路由(不過React 有插件支持),與Angularjs,Emberjs等大而全的框架不同,React專注的中心是Component,即組件,React認為一切頁面元 素都可以抽象成組件,比如一個表單,或者表單中的某一項。

常用技術要點

props

每一個組件都有可變與不可變的屬性,props就是不可變的屬性,當props改變時,組件的繪制方法不會被調用。

states

states就是組件的可變屬性,states的改變會觸發組件的render函數,react與其他mvvm框架的最大的不同點就是,react 組件可以想象成一個狀態機,狀態的改變會重繪UI,然后根據 dom diff 算法來繪制UI,而其他的mvvm框架則是對js對象的dirty check(Angularjs)或者defineProperty時指定的回調函數(Emberjs),因此,狀態機制與dom diff的存在聲稱React更快。

我們在設計React組件時如何靈活的運用props與state是一個非常關鍵的要點。

refs

refs這個點主要用在上級組件調用下級組件的場景,這個場景非常多見。

componentDidMount

組件UI渲染完畢后調用,常用在這種業務場景:調用ajax獲得數據后,渲染UI。

state的改變會觸發render

正如上文中所說,React組件是一個一個狀態機,state的改變會改變狀態,會觸發重繪,對於state的設計是對React組件設計的關鍵。

各種坑

觸摸事件

React中的觸摸事件僅用三種,touchstart, touchend, touchend,可是這種會有問題,有時候我需要滾動頁面的時候,很容易觸發某一個元素的touchend事件,為此筆者找了一個React第三方組件,React-tappable

還無意中發現一個Android與iOS的不同之處

input在disable且readonly之后,onClick會在iOS上觸發不起來,onTouchEnd又會在Android上把鍵盤彈出來,這邊筆者做了個Hack,iOS下用onTouchEnd,Android下用onClick,就正常了。

高級技術要點

mixin

曾經跟一個朋友討論,封裝utils模塊為純js模塊好還是React式的模塊好的問題,他給我了一個概念,React mixin,本來自己在開發中確實寫了很多可復用的小組件,但由於沒有過多的了解React周邊的相關知識,因此忽略了React mixin,筆者認為以后可以探究一下這個技術點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM