本篇主要记录在 React-Redux 中使用中间件用 fetch 进行网络请求,在 请求开始 和 请求结束 时,中间件自动发送相应的 action 然后更新应用页面。
由于 fetch 并没有正式发布,而且在浏览器中支持也不是很好,所以使用 isomorphic-fetch 来进行 fetch 操作。
示例1
主要功能:使用 fetch 请求服务器获取数据,请求开始 和 请求结束(失败/成功)分别分发 action 刷新页面状态,并且显示请求结果。
step1: 定义 state 结构
|
|
将 state 定义成如上,isFetching 表示是否正在进行网络请求,data 则表示获取到的请求结果。
step2: 定义 action
|
|
上面定义了两种 Object 类型的 action,分别是 fetchBegin() 和 fetchEnd() ,分别表示请求开始和请求结束,其中请求结束时 action 携带了请求状态、请求结果。但是这两种 action 都不会由 store 直接分发,而是在请求开始、请求结束时由中间件替我们分发相应的 action。
发起一个请求直接使用 fetchAction,在这个函数里面会自动分发请求开始的 action,在请求结束之后,也会自动分发请求结束的 action。
step3: 定义 reducer
|
|
定义处理 state 的函数 reducer。
step4: 定义组件
|
|
使用 connect() 将 redux 的 state 和 dispatch() 分发action的行为转换给 App 组件的 props 属性。
在 App 一旦被加载的时候,就调用 fetchAction 进行网络请求获取数据。
step5: 使用 React-Redux 和 中间件
|
|