转载自:React.js 小书
http://huziketang.mangojuice.top/books/react/
redux学习资源推荐:https://cn.redux.js.org/docs/introduction/LearningResources.html
Context
http://huziketang.mangojuice.top/books/react/lesson29
一个组件可以通过 getChildContext
方法返回一个对象,这个对象就是子树的 context,提供 context 的组件必须提供 childContextTypes
作为 context 的声明和验证。(context像全局变量一样危险,React将他弄复杂一点以减少人们的使用)
如果一个组件设置了 context,那么它的子组件都可以直接访问到里面的内容,它就像这个组件为根的子树的全局变量。任意深度的子组件都可以通过 contextTypes
来声明你想要的 context 里面的哪些状态,然后可以通过 this.context
访问到那些状态。
Reducer
纯函数:一个函数的返回结果只依赖于传给它的参数,并且在执行过程里面没有副作用(不会改变外部变量的值,不会产生外部可观察的变化,甚至连console.log()也算副作用)
redux中的reducer是一个纯函数,仅仅进行初始化操作和计算新的state,接受两个参数,state和action。
Redux三大原则
-
单一数据源:整个应用的 state 被储存在一棵 object tree 中,并且这个 object tree 只存在于唯一一个 store 中。
-
state只读:唯一改变 state 的方法就是触发 action,action 是一个用于描述已发生事件的普通对象。
-
使用纯函数来执行修改:为了描述 action 如何改变 state tree ,你需要编写 reducers。
combineReducers()函数
帮助将子reducer合并为一个reducer,并把两个结果集合并成一个 state 树
React-move动画的实现
Animate
NodeGroup
https://github.com/react-tools/react-move#transitioning-state