react+redux+redux-deferred实现ajax异步请求,真的良心之作啊!
来源:互联网 发布:mac f117笔记本 编辑:程序博客网 时间:2024/05/16 14:47
1、在我做项目的时候,仅仅依靠redux是不能实现ajax异步请求的,网上的教程,真的坑的一逼啊!redux-thunk占主流!但是实现起来坑太多!
2、简单的东西不一定是最好的,但最好的东西一定是简单的,下面我们就用redux-deferred实现异步请求
3、目录结构还和我之前的博客里面的一模一样,链接:http://blog.csdn.net/take_dream_as_horse/article/details/53037060
首先,在项目里安装redux-deferred,命令行语句: npm install redux-deferred --save
4、moreAction.js文件,定义异步请求接口,我这里用的$.get()(如果要传参的话和之前使用$.get()方法一模一样)
var $=require('jquery');var fetch =require('isomorphic-fetch');//定义处理函数,返回的值let receivePosts=function (){ return { type: 'add_todo', payload:$.get('https://api.github.com/users') }}module.exports=receivePosts;
5、moreReducer.js文件,取到ajax的值,更新state
////定义方法,用于更新视图let moreReducers= function(state, action){ if(typeof state === 'undefined'){ return [{ login:"这是初始化login", id:"这是初始化id", avatar_url:"这是初始化avatar_url", html_url:"这是初始化html_url", completed: false }]; } //打印ajax取到的值 console.log(action.payload[0]); switch(action.type){ case 'add_todo': return state.concat({ login: action.payload[0].login, id: action.payload[0].id, avatar_url:action.payload[0].avatar_url, html_url:action.payload[0].html_url, completed: false }); break; default: return state; }};module.exports=moreReducers;注:还有如果不进行接下来的操作:绑定store文件,打印ajax的值就会undefined
6、moreStore,js文件,绑定store的值,这里就会用到我们之前安装的redux-deferred了
var {createStore,applyMiddleware} = require('redux');var moreReducer=require('../reducers/moreReducer');var DeferredMiddleware =require('redux-deferred');//默认输出let store =createStore(moreReducer,applyMiddleware(DeferredMiddleware));module.exports = store;7、小伙伴们以为这样就OK了,no no no!
重点来了:applyMiddleware()方法的源码(applyMiddleware.js)第49行,会return middleware(middlewareAPI),我之前启动的项目的时候,会报错 :middleware is not function。相信大家都知道,报错原因就是它根本就不是一个函数方法
不要着急,直接打印middleware ,是一个对象好嘛!逗我呢!
middleware.default()才是一个function好嘛!直接修改源码,项目就可以正常跑起来了,附上我修改后的源码
8、直接启动项目,添加一条,看看成功没有。说明:我这里添加没有接口,所以我调用的是github的接口(就是我添加的内容不会展示到页面上,而是展示的其他文本内容),直接截图
(1)点击添加:接口调用成功
(2)接口也有数据返回
(3)视图也成功更新
- react+redux+redux-deferred实现ajax异步请求,真的良心之作啊!
- 实现简单的 react-redux
- Redux和React组件的异步交互
- React-Native 之 redux 与 react-redux
- React-Native 之 redux 与 react-redux
- React和Redux的连接react-redux
- React和Redux的连接react-redux
- React和Redux的连接react-redux
- React和Redux的连接react-redux
- React和Redux的连接react-redux
- React和Redux的连接react-redux
- React和Redux的连接react-redux
- React、Redux、React-Redux的一些理解
- react+redux+react-redux
- React Native 之 Redux
- react之redux新手入门
- React + Redux 最佳实践 学习之 redux
- 实现一个自己的react-redux
- PHP设计模式之:单例模式
- Android 中 ProGuard 混淆详解(一)
- Linux中批量关闭mysql中同一名字的多个进程(指令)
- js中选项卡的简单实现1
- 关于mysql字段时间类型timestamp默认值为当前时间问题
- react+redux+redux-deferred实现ajax异步请求,真的良心之作啊!
- Linux下重启BO服务步骤
- Spring集成Quartz定时任务框架介绍和Cron表达式详解
- C语言:有1,2,3,4四个数子,可以组成多少个互不相同且无重复的三位数
- Latex中thebibliography后面的数字的含义
- Android Multimedia框架总结(十七)音频开发基础知识
- Incomplete reply from server
- File类的createNewFile()与createTempFile()的区别
- 使用 HttpClient 和 HtmlParser 实现简易爬虫