从ios转战rn,从3月份到7月份,学习笔记。
层级关系,学习过程
Javascript
推荐比较好的学习网站,没事的时候去溜达溜达。
ReactJS
ReactJS是facebook推出的一种框架。
主要的是解决复杂或频繁的DOM操作。
ReactJS是创建一种虚拟DOM的方式,diff算法,每当有更新时,计算渲染的组件,避免不必要其他组件的渲染。
ReactNative
并不是webView的实现。
React是一种思想,Facebook对于Web Components的理解与实现.
React native 是用React的方式开发mobileApp。
结构图
生命周期
生命周期大体可以分为三部分:
- MOUNTING
- RECEIVE_PROPS
- UNMOUNTING
getDefaultProps 方法只执行一次,这样所有实例初始化的 props 将会被共享。
React刷新页面
- props
props就是组件的属性,由外部通过 JSX 属性传入设置
- state
state 是组件的当前状态, 根据状态 state 呈现不同的 UI 展示
pure render:无状态组件非常简单,开销很低,如果可能的话尽量使用无状态组件
{
const HelloMessage = (props) => <Text> Hello ${props.name}</Text>"
}
React常用的组件库
Immutable
- JavaScript 中的对象一般是可变的(Mutable),当应用复杂后,这就造成了非常大的隐患
- Immutable就是解决这种问题,将数据进行解耦,只有oldState => newState,不会在老的数据上面做修改,会生成新的数据。
- 一定程度上实现了MVVM的设计思想。
- List->Array, Map->Object
Redux
如果数据量很庞大,业务量很复杂的时候,依靠props来传递数据就显得有些复杂和难以维护,于是就有了redux和flux。
- State
- Reducer
- Action
- Store
redux默认只会在程序中存在一个store,这与flux的最大不同之处,store里面存储了所有的state,state存储了所有用到的数据,通过action的状态改变,在reducer里面做出相应的数据转变和传输。
通过依靠connect的方法,将store中的state以props的方式传递到component中去。
Immutable与Redux的结合使用
immutable与redux相辅相成,可以在redux的state中将数据用immutable封装起来,防止数据出现变动。
每一个redux中action的改变,触发reducer中的数据转变。也只有在reducer中才可以进行state的数据转变,保证了数据的不可变性。