最近觉得react的知识之前跟着视频学了,有些知识点容易忘,有些又理解的不透彻,就发现了这本书,大致浏览了一下,比我之前看的学习视频讲的更透彻。好记性不如烂笔头,我大致罗列一些我在书上划的重点。
第一章相关知识点:
1.react专注视图层。react不是完整的MVC/MVVM框架,它专注于提供清晰、简洁的view(视图)层解决方案。而又与模板引擎不同,react不仅专注于解决view层的问题,又是包括view和controller的库。
2.虚拟元素的构建和更新都是在内存中完成的,并不会真正渲染到DOM中去。在react中创建的虚拟元素可以分为两类:DOM元素和组件元素,分别对应着原生dom元素与自定义元素。
3.属性表达式checked={}、disabled={}、required={}、readOnly={}
4.javascript属性表达式,只要用{}替换“”即可
5.react组件的创建方法有3种:React.createClass |es6 classes |无状态函数
React.createClass是最传统也是兼容性最好的方法,const button=React.createClass({
})
es6 classes 与createclass结果相同的是,调用类实现的组件会创建实例对象
无状态函数
使用无状态函数构建的组件叫做无状态组件,且官方颇为推崇
function Button({color='blue',text='confirm'}){
return(
<button className={`btn btn-${color}`}>
<em>{text}</em>
</button>
)
}
无状态组件只传入props和context两个参数:不存在state,也没有生命周期方法。无状态组件不像上述两种方法在调用时会创建新实例,它创建时始终保持了一个实例,避免了不必要的检查和内存分配,做到了内部优化。
6.react数据是自顶向下单向流动的。
如果顶层组件初始化props,那么react会向下遍历整颗组件树,重新尝试渲染所有相关的子组件。
而state只关心每个组件自己内部的状态,这些状态只能在组件内改变。把组件看作一个函数,那么它接受了props作为参数,内部由state作为函数的内部参数,返回一个virtual dom的实现
7.当组件内部使用库内置的setstate方法时,最大的表现就是该组件会尝试重新渲染
注意:setstate是一个异步方法,一个生命周期内所有的setstate方法会合并操作
8.props本身是不可变的,组件的props一定来自于默认属性或通过父组件传递而来
9.componentwillmount方法会在render方法之前执行,componentdidmount方法会在render方法之后执行,分别代表了渲染前后的时刻。这些只会在组件初始化时运行一次。
10.componentwillmount中执行setstate方法,组件会更新state,但组件只会渲染一次;
componentdidmount中执行setstate方法,组件会渲染两次;
如果组件自身的state更新了,会一次执行
shouldcomponentupdate--->componentwillupdate--->render--->componentdidupdate
11.
12.refs可以附加到任何一个组件上,组件被调用时会新建一个该组件的实例,而refs就会指向这个实例,它可以是一个回调函数,这个回调函数会在组件被挂载后立即执行。refs也支持字符串型的