React 实战进阶 45 讲
王沛
eBay 中国研发中心资深技术专家
35691 人已学习
新⼈⾸单¥68
课程目录
已完结/共 46 讲
React 实战进阶 45 讲
登录|注册
留言
6
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 14 | Redux(4) : 理解异步Action、Redux中间件
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | React出现的历史背景及特性介绍
03 | 以组件方式考虑UI的构建
04 | JSX的本质 : 不是模板引擎,而是语法糖
05 | React组件的生命周期及其使用场景
06 | 理解Virtual DOM及key属性的作用
07 | 组件设计模式 : 高阶组件和函数作为子组件
08 | 理解新的Context API及其使用场景
09 | 使用脚手架工具创建React项目
10 | 打包和部署
11 | Redux(1) : 前端为何需要状态管理库
12 | Redux(2) : 深入理解Store、Action、Reducer
13 | Redux(3) : 在React中使用Redux
14 | Redux(4) : 理解异步Action、Redux中间件
15 | Redux(5) : 如何组织Action和Reducer
16 | Redux(6) : 理解不可变数据(Immutability)
17 | React Router(1):路由不只是页面切换,更是代码组织方式
18 | React Router(2):参数定义,嵌套路由的使用场景
19 | UI组件库对比和介绍:Ant.Design、Material UI、Semantic UI
20 | 使用Next.js创建React同构应用
21 | 使用Jest、Enzyme等工具进行单元测试
22 | 常用开发调试工具:ESLint、Prettier、React DevTool、Redux DevTool
23 | 前端项目的理想架构:可维护、可扩展、可测试、易开发、易建构
24 | 拆分复杂度(1):按领域模型(feature)组织代码,降低耦合度
25 | 拆分复杂度(2):如何组织component、action和reducer
26 | 拆分复杂度(3):如何组织React Router的路由配置
27 | 使用Rekit(1):创建项目,代码生成和重构
28 | 使用Rekit(2):遵循最佳实践,保持代码一致性
29 | 使用React Router管理登录和授权
30 | 实现表单(1):初始数据,提交和跳转
31 | 实现表单(2):错误处理,动态表单元素,内容动态加载
32 | 列表页(1):搜索,数据缓存和分页
33 | 列表页(2):缓存更新,加载状态,错误处理
34 | 页面数据需要来源多个请求的处理
35 | 内容页的加载与缓存
36 | 基于React Router实现分步操作
37 | 常见页面布局的实现
38 | 使用React Portals实现对话框,使用antd对话框
39 | 集成第三方JS库:以d3.js为例
40 | 基于路由实现菜单导航
41 | React中拖放的实现
42 | 性能永远是第一需求:时刻考虑性能问题
43 | 网络性能优化:自动化按需加载
44 | 使用Reselect避免重复计算
45 | 下一代React:异步渲染
46 | 使用Chrome DevTool进行性能调优&结课测试
登录 后留言

全部留言(6)

  • 最新
  • 精选
Robin
老师:下面这段代码,mapDispatchToProps函数体中返回的对象里有个key是actions,它实际起什么作用? function mapStateToProps(state) { return { examples: state.examples, }; } /* istanbul ignore next */ function mapDispatchToProps(dispatch) { return { actions: bindActionCreators({ fetchRedditList }, dispatch), }; } export default connect(mapStateToProps, mapDispatchToProps)(RedditListPage); 之前我看您demo的一段代码,它也是用的connect,但是它是这样返回的,它跟上面的返回方式不太一样,请问这两者有什么区别?: function mapStateToProps(state) { return { count: state.count }; } function mapDispatchToProps(dispatch) { return bindActionCreators({ plusOne, minusOne }, dispatch); } const ConnectedCounter = connect(mapStateToProps, mapDispatchToProps)(Counter);

作者回复: 这里的 actions 是传给组件的一个属性,可以是任意名字,使用时可以通过 this.props.actiions.xxx() 来引用某个 action,除了这么做,也可以把 xxx 直接传给组件,也就是后面的做法,从而通过 this.props.xxx() 来使用这个 action。所以用 actions 只是为了把多个 action 组织成了一个 属性传给了组件。

2018-12-02
4
Seven
rekit这个工具是否可以支持选择 redux或者mobx

作者回复: Mobx 暂不支持,不过3.0 发布后可以很容易添加支持

2018-09-17
xjjksj
Hi 老师,fetchRedditList的源码在哪里可以看到呢?

作者回复: https://github.com/supnate/rekit-boilerplate-cra/blob/master/src/features/examples/redux/fetchRedditList.js 用 Rekit 创建一个项目也可以看到

2018-06-26
Jeff
虽然很晚才看这个课,羞愧。。其实我觉得讲的有误……asnyc和redux-thunk本质上没关系……async是由promise做到的,thunk是支持了function类型的action
2021-02-03
1
loading不应该作为一种状态呀,这一点我很抗拒的, 我用axios做,调用http请求之前有个钩子函数,里面添加loading状态,,loading状态应该在统一的地方做一个拦截处理,要么就写在组件内部,把loading作为一种单独的action我是比较抗拒的。
2019-04-03
1
achilles
dispatch({ type: EXAMPLES_FETCH_REDDIT_LIST_SUCCESS, data: res.data, }); resolve(res); 这种的还不够具体, 请求是成功了。可是业务场景中 要根据各种后端的返回值 比如code = 100 code = 200 还有后端返回的errMsg, 根据这些场景还有 弹窗 或者toast 提示,。。。 并不一定就有data了。。。。。
2019-12-13
1
收起评论