『壹』 这么多人吹捧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); }}