Linux/Windows 实用命令及工具
Enjoy coding
在上一篇 React-Redux 中使用中间件用 fetch 进行网络请求的例子基础上,继续来看使用 React-Redux 商城购物车的实现。主要的两个功能:
本篇主要记录在 React-Redux 中使用中间件用 fetch 进行网络请求,在 请求开始 和 请求结束 时,中间件自动发送相应的 action 然后更新应用页面。
前面所接触到的 state 状态更新,都是同步更新,但实际上 state 状态更新并不是在用户发起操作的一刻就马上更新,往往还伴随着【请求服务器 -> 等待服务器响应 -> 处理服务器响应 -> 最后更新 state 】这样的一个流程。
React 是一个前端框架,而 Redux 是一种数据处理解决方案,两者之间没有任何直接联系,可以使用 Redux 中 store.subscribe 函数订阅监听数据改变,然后手动刷新整个应用,但是这样刷新的效率低下,并不能最大化 React 的优点,而 React-Redux 则是专门用于将 React 和 Redux 结合起来,让我们可以使用 state 函数的形式来描述界面,优化应用程序重新渲染。
之前使用 React + Redux 写了一个计算功能,现在再来看一个稍微复杂一点的例子。设想有这样一个待办事项列表,用户可以进行的操作为:
接下来的这个例子将完成上面所设定的功能。
在 Redux 中,对 state 进行计算重新返回的方法通常叫做 reducer,如果 state 比较简单,只在一个 reducer 中也可以清晰的看明白数据处理过程,但 redux 通常用来处理复杂的应用程序,state 结构通常比较庞大,结构比较复杂,如果都写到一个方法里面,非常不便于维护,此时就需要对 reducer 进行拆分成多个子 reducer。
Redux 适合用于前端业务非常复杂,或者需要从多个数据源请求数据等需求。Redux 将整个应用所需要用到的数据组织存放在一个叫做 state 的对象里面,每次从服务器请求数据或者用户交互使数据发生改变之后,都需要先发送一个 action,然后在 action 处理函数中更新 state 对象。和常规做法不同的是,我们并不需要手动去更新 UI,更新 UI 的过程由中间件去完成,state 对象改变之后,UI 会自动更新。
在使用Binder进行进程间通信,服务端和客户端进行数据传递时,数据的传递(请求、响应)需要将数据打包成Parcel数据包,Parcel数据包写入和读取都需要按相同的顺序,给编码工作造成额外的工作量。而AIDL作为一个工具,可以将符合规范的aidl文件转换为java文件,将数据打包,解包成Parcel的工作给我们实现了,让我们专注于核心业务。