『壹』 這么多人吹捧ReactJS,但是真的好嗎
最近用react做了一個聊天類型的應用,說一下大概的看法吧:
言簡意賅的說,react+rex+immutable+其它輔助lib的方案,在多狀態、多交互的產品中,還是有很大的應用場景,一圖勝千言:
以下是根據自己體驗和社區經驗,得出的一些想法:
mvvm 是架構層面的模式,函數式是編程上的範式,兩者不是對立面,react+flux 是函數式,mvvm 里一樣可以用函數式,恰恰在不少 mvvm 的實現框架中,FPR 是很重要的實現雙綁的方案:比如 ReactiveCocoa 用到的 RAC。
是否有實際的案例去證明,應用規模大了後,mvvm 就不能用了?非要你的 flux? flux 才出現多久,以前用 mvvm 實現的大規模應用都是假的?
react 支持者都是直接根據官方文檔照讀:雙綁很混亂,flux 才能解決一切,事實是,你喜歡單向數據流,mvvm 一樣支持啊,不要雙綁就行了呀。
react 我沒有實際用過,不發表負面評論,但讓我覺得比較亮的是透明的virtual dom和同構方案。
性能這塊,ng 未必會比 react 慢,但不好的地方在於,ng 需要知道 track by 這些黑魔法才能做到優化,而很多開發者並不知道這點,在這上面,react 是領先的。
virtual dom 的引入也讓 react 脫離了視圖的具體實現,可以很方便的切換底層平台,這是一個大優勢,而 ng2的架構也會做到這點。
react是 view 層,你要願意,mvvm 里的 v 同樣可以用 react 來做,不要隨便把 mvvm 和 react 等價,認為只有 react 能用 flux,認為 react 只能用於 flux。
用還是不用?客觀:因地制宜主觀:因人而異其實:你高興就好
『貳』 如何實現ReactJS 監聽頁面滾動事件
實現ReactJS 監聽頁面滾動事件,代碼如下:
export class Example extends Component{ scrollHandler = this.handleScroll.bind(this); componentDidMount() { window.addEventListener('scroll', this.scrollHandler); } _handleScroll(scrollTop) { console.log(scrollTop) //滾動條距專離頁面的高屬度 } } handleScroll(event) { let scrollTop = event.srcElement.body.scrollTop; this._handleScroll(scrollTop); }}