react杂谈
#React 杂谈
@auther 【homker】 @date 【2015 11 30】
最近接触React蛮多的,把一些东西记录下来,为了后面更好的学习。
React是什么
在reactjs.org的官网上,是这么说的哈:
A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES
那么,很简单喽,这个库
,就是一个帮助开发者更好的处理用户界面
的东西。
这里注意两个点:
- 这是一个用户界面的库
- 这是一个库
Library 库
作为一个库,区别于angular
,同时也区别于vue
,虽然这里有一点问题还待商榷的是,vue好像没有说自己是一个框架还是一个库,但是,我个人更偏向于把它看成是前者。那么好了,如果,认为是一个库,那么作为一个库,他只是提供一个辅助工具
,来帮助你解决问题,而是不是提出一个完整的解决方案,所以,你会发现,现在react是很自由的,你可以选择任何你喜欢的东西和它搭配在一起工作,他们也能工作的很好。同时,问题也来了,因为他是一个库,所以,有很多东西就变的很不确定。
为什么要用react
使用react的原因有很多,鄙人愚钝,觉得其中比较明显的原因如下:
组件化
react中非常明确的提出了组件(component)的概念,这个组件的概念,不单单指的是web component还包括了native component。而组件化的同时,也自然而然的带来了组件的生命周期
。并且,结构代码的语义化
在组件化的同时得到了更高层次的实现。
一个react的组件应该看起来是酱的:
1 |
|
其中App,就是组件啦,在ES6中,你可以定义为一个class,就像酱:
1 |
|
个人认为:
组件化的本质其实是对view层的封装。将繁重的view层的变化操作从数据流变化操作中脱离出来,实现数据层和view层的分离。也就是说,在整个代码的组织结构中,数据层将不再处理样式或者说显示上的不同,而是,只要关心数据本身的变化,然后告诉react,变化后的数据集(Date set),剩下的view层变化由react来完成。这样导致了,react希望的数据流每次都是完整
的,而不是一个数据片段。这也导致了,react希望使用不可修改类型的数据格式来保证每次的数据是新
的。同时,对于数据层而言,自然就希望view层的所有变化应该是可预见的。我提供怎么样的新
数据,你就给我显示出来。
生命周期
然后,在其内部定义了生命周期,共有四个。如图:
从生命周期的名字,很清楚的就知道啦,执行顺序如图所示。
组件的生命周期还要注意两点:1
2
3ReactDom.render(<MyComponent />, body);
ReactDom.unmountComponentAtNode(body);
ReactDom.render(<MyComponent />, body);
上面的代码是 ReactDom将组件挂载在真实的DOM上的。当然还有移除的方法。要注意的地方是,这里挂载的时候,DOM必须是已经存在着的,不然并不可以啊。也就是说,如果你挂载在动态的DOM的时候,一定要确保DOM是已经生成的,并且真真正正的存在着。
对于React中,生命周期具体的管理方法可以参考这篇文章:React LifeStyle。