React 实战进阶 45 讲
王沛
eBay 中国研发中心资深技术专家
35694 人已学习
新⼈⾸单¥68
课程目录
已完结/共 46 讲
React 实战进阶 45 讲
登录|注册
留言
16
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 25 | 拆分复杂度(2):如何组织component、action和reducer
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进行性能调优&结课测试
本节摘要

拆分复杂度代码:

拆分复杂度的代码是通过 Rekit 创建的项目演示的,你可以本地创建一个项目,只需 3 步:

  1. 安装 Rekit:
复制代码
npm install -g rekit
  1. 创建项目:
复制代码
rekit create my-app
  1. 安装依赖并启动项目:
复制代码
npm install
npm start

课程源代码地址:

登录 后留言

全部留言(16)

  • 最新
  • 精选
尹航
你好。如果按领域模型组织结构。如何跨模型交互?比如微信客户端,即时通讯和收藏是两个模型,收藏中某一条右键发送给好友,需要调用即时通讯的action

作者回复: 很好的问题,按领域模型组织代码不意味着两者不能交互。收藏 feature 可以直接调用即时通讯 feature 的 action,只要从那边 import 这个 action 即可。import { sendMessage } from '../im/sendMessage'; 然后绑定到收藏的 UI 组件上。

2018-07-20
6
猫咪骑士
这样按照feature组织代码,比如examples里有一个Layout.js,那么如果增加一个新的feature,需要怎样才能共享这个Layout.js呢?是不是需要创建一个单独的layout目录把layout?

作者回复: 可以直接用 examples 里的 Layout 文件,更好一点把 Layout 组件放到 common feature 里

2019-06-06
1
Bojack
每个文件里只包含一个action和reducer写起来是不是太烦了,感觉dva中的model这个概念写起来效率会更高

作者回复: 可以试下 Rekit,代码结构都生成好了。

2019-01-19
1
No。
您好,请问如何打包每个feat下的style.less,上面说打包style.less,是在项目主入口文件import 需要的feat的style.less吗?

作者回复: 是的,在src/styles/index.less 里引入了所有 feature 的 style

2018-07-26
2
1
彧豪
老师你好,我目前在用react做项目,你的课程给了我很多的思路,十分感谢~~ 样式文件按你推荐的方式,某一个文件引入所有样式文件,然后入口文件再引入这个文件,思路很好,这也是我之前没想到的!! 后来我思考了一个问题:页面的图片文件需不需要这样处理呢? 例如页面上有3个组件用到a图片,我之前是用url-loader,将这个图片像其他js模块那样来用,这样那3个组件都要import一下这个图片,如果组件被复用了,那么是不是也会将图片多次打包呢? 我效仿样式文件的处理方式,只不过用的是export { default as a } from "xxx/xxx..."的形式,说白了是你这个项目中处理js组件的方式,但是我没法引入a图片,通过import {a} from "./",或者其他一些可能的目录,总是报Cannot find module './'这样的错,路径错误 还是图片没有必要这么做,就直接从img中引入图片就好,这些图片是组件本身的部分,不存在样式文件的重复打包的问题呢?

作者回复: 图片不会重复打包,会被作为静态资源打包到static目录,所以不需要这么做~

2018-11-23
只是八次
我想要这节课的demo,但是在下面的地址找不到该demo呀。这是付费课程,demo应该可以放出来吧?

作者回复: 您好,拆分复杂度的代码是通过 Rekit 创建的项目演示的,您可以本地创建一个项目,只需 3 步: 1)安装 rekit:npm install -g rekit 2)创建项目:rekit create my-app 3)安装依赖并启动项目: npm install npm start

2018-08-11
2
yydounai
老师您好,视频四分钟的时候说到,组件内引入css的潜在问题是有可能造成css样式重复打包,这个不是很理解。难道css和js不一样,重复引用会重复打包吗?
2019-04-09
2
7
小寞子。(≥3≤)
什么时候加入hooks。 实际上软件本身内部state并不多。 很多action or reducers都可以变成hooks 。
2020-07-19
2
Jessie
请问,examples/redux/reducer.js里,为啥不用combineReducers呢?而是export一个自已实现的function,里面是用了数组的reduce。
2023-12-28
村长
很赞的一次课程
2020-11-09
收起评论