1.React简介与特性
特点
- 声明式
- 组件化
- 跨平台编写
Thinking In React
react是用JavaScript构建快速响应的大型Web应用程序的首选方式之一。
React 作为一个 JavaScript 库,和其他的 JavaScript 库相比,有如下所示特点:
- 声明式设计:
React采用声明范式,可以轻松描述应用。以声明式编写UI,可以让代码更加可靠,且方便调试。 - 组件化:为程序编写独立的模块化
UI组件,并且它们可以引入其他组件,这等同于提高了代码的可维护性。 - 高效:
React通过对DOM的模拟,最大限度地减少与DOM的交互。 - 灵活:
React可以与已知的库或框架很好地配合。 JSX:JSX是JavaScript语法的扩展。React开发不一定使用JSX,但我们建议使用它。- 单向响应的数据流:
React实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。 - 跨浏览器兼容:虚拟
DOM帮助我们解决了跨浏览器问题,它为我们提供了标准化的API,甚至在IE8中都没有问题。
优缺点
- 优点
- 快速响应:Fiber
- 组件化:复用性强
- 声明式编程
- 跨平台:只需修改渲染器
- 缺点
- 大型应用需要配套学习状态管理、路由工具
- 不适合小型应用,需要用babel处理
2.常用API
- Provider组件:提供共享的store,HOC(高阶组件),Provider 返回一个HOC(高阶组件)的函数:conncet。
- connect方法:从store中获取数据和方法,注入组件,返回包含数据和方法的高阶组件。接受两个参数:mapStateToProps和mapDispatchToProps。它们定义了 UI 组件的业务逻辑。前者负责输入逻辑,即将state映射到 UI 组件的参数(props),后者负责输出逻辑,即将用户对 UI 组件的操作映射成 Action。 mapDispatchToProps() connect函数的第二个参数,用来建立 UI 组件的参数到store.dispatch方法的映射。它定义了哪些用户的操作应该当作 Action,传给 Store。它可以是一个函数,也可以是一个对象。
- useSelector方法:与connect获取数据的作用一样,即获取组件所需的store中的数据 useDispatch方法:与connect获取数据更新方法的作用一样,即获取dispatch方法,用于发送action来更新store中的数据。
- applyMiddleware applyMiddleware(…middlewares) 引入中间件,比如我们经常使用的用于处理异步action的redux-thunk 中间件。实际上,中间件是一个函数,对store.dispatch函数进行了改造,在发出action和执行reducer之间,增加了一些其他的功能。
- compose compose是一个返回依次执行参数里面的方法的函数, 其内部是通过Array.prototype.reduceRight 函数实现的,一般redux项目使用多个中间件时会用到。
- mapStateToProps() mapStateToProps是一个函数,它接受state作为参数,返回一个对象。这个对象有一个todos属性,代表 UI 组件的同名参数,后面的getVisibleTodos也是一个函数,可以从state算出 todos 的值。