【React.js小书】动手实现 React-redux(五):Provider - 方志
我们要把 context 相关的代码从所有业务组件中清除出去,现在的代码里面还有一个地方是被污染的。那就是 src/index.js 里面的 Index:
1 |
... |
其实它要用 context 就是因为要把 store 存放到里面,好让子组件 connect 的时候能够取到 store。我们可以额外构建一个组件来做这种脏活,然后让这个组件成为组件树的根节点,那么它的子组件都可以获取到 context 了。
我们把这个组件叫 Provider,因为它提供(provide)了 store:

在 src/react-redux.js 新增代码:
1 |
export class Provider extends Component {
|
Provider 做的事情也很简单,它就是一个容器组件,会把嵌套的内容原封不动作为自己的子组件渲染出来。它还会把外界传给它的 props.store 放到 context,这样子组件 connect 的时候都可以获取到。
可以用它来重构我们的 src/index.js:
1 |
...
import { Provider } from './react-redux'
|
这样我们就把所有关于 context 的代码从组件里面删除了。
目录
第一个阶段
- Lesson1 - React.js 简介
- Lesson2 - 前端组件化(一):从一个简单的例子讲起
- Lesson3 - 前端组件化(二):优化 DOM 操作
- Lesson4 - 前端组件化(三):抽象出公共组件类
- Lesson5 - React.js 基本环境安装
- Lesson6 - 使用 JSX 描述UI信息
- Lesson7 - 组件的 render 方法
- Lesson8 - 组件的组合、嵌套和组件树
- Lesson9 - 事件监听
- Lesson10 - 组件的 state 和 setState
- Lesson11 - 配置组件的props
- Lesson12 - state vs props
- Lesson13 - 渲染列表数据
- Lesson14 - 实战分析:评论功能(一)
- Lesson15 - 实战分析:评论功能(二)
- Lesson16 - 实战分析:评论功能(三)
第二个阶段
- Lesson17 - 前端应用状态管理 —— 状态提升
- Lesson18 - 挂载阶段的组件生命周期(一)
- Lesson19 - 挂载阶段的组件生命周期(二)
- Lesson20 - 更新阶段的组件生命周期
- Lesson21 - ref 和 React.js 中的 DOM 操作
- Lesson22 - props.children 和容器类组件
- Lesson23 - dangerouslySetHTML 和 style 属性
- Lesson24 - PropTypes 和组件参数验证
- Lesson25 - 实战分析:评论功能(四)
- Lesson26 - 实战分析:评论功能(五)
- Lesson27 - 实战分析:评论功能(六)
第三个阶段
- Lesson28 - 高阶组件(Higher-Order Components)
- Lesson29 - React.js 的 context
- Lesson30 - 动手实现 Redux(一):优雅地修改共享状态
- Lesson31 - 动手实现 Redux(二):抽离 store 和监控数据变化
- Lesson32 - 动手实现 Redux(三):纯函数(Pure Function)简介
- Lesson33 - 动手实现 Redux(四):共享结构的对象提高性能
- Lesson34 - 动手实现 Redux(五):不要问为什么的 reducer
- Lesson35 - 动手实现 Redux(六):Redux 总结
第四个阶段
- Lesson36 - 动手实现 React-redux(一):初始化工程
- Lesson37 - 动手实现 React-redux(二):结合 context 和 store
- Lesson38 - 动手实现 React-redux(三):connect 和 mapStateToProps
- Lesson39 - 动手实现 React-redux(四):mapDispatchToProps
- Lesson40 - 动手实现 React-redux(五):Provider
- Lesson41 - 动手实现 React-redux(六):React-redux 总结
- Lesson42 - 使用真正的 Redux 和 React-redux
- Lesson43 - Smart 组件 vs Dumb 组件
- Lesson44 - 实战分析:评论功能(七)
- Lesson45 - 实战分析:评论功能(八)
- Lesson46 - 实战分析:评论功能(九)
【React.js小书】动手实现 React-redux(五):Provider - 方志的更多相关文章
- React.js 小书 Lesson23 - dangerouslySetHTML 和 style 属性
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson23 转载请注明出处,保留原文链接和作者信息. 这一节我们来补充两个之前没有提到的属性,但是在 ...
- React.js 小书介绍
React.js 小书 Github 关于作者 这是一本关于 React.js 的小书. 因为工作中一直在使用 React.js,也一直以来想总结一下自己关于 React.js 的一些知识.经验.于是 ...
- React.js小书总结
(迁移自旧博客2017 08 27) 第一阶段 react的组件相当于MVC里面的View. react.js 将帮助我们将界面分成了各个独立的小块,每一个块就是组件,这些组件之间可以组合.嵌套,就成 ...
- React.js 小书 Lesson17 - 前端应用状态管理 —— 状态提升
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson17 转载请注明出处,保留原文链接和作者信息. 上一个评论功能的案例中,可能会有些同学会对一个 ...
- React.js 小书 Lesson5 - React.js 基本环境安装
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson5 转载请注明出处,保留原文链接和作者信息. 安装 React.js React.js 单独使 ...
- 很赞的一个教程: React.js 小书
很赞, React.js 小书 http://huziketang.com/books/react/ 推荐阅读入门, 照着来一遍,能会个七七八八, 更多的还需要多写 import Re ...
- React.js 小书 Lesson25 - 实战分析:评论功能(四)
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson25 转载请注明出处,保留原文链接和作者信息. (本文未审核) 目前为止,第二阶段知识已经基本 ...
- React.js 小书 Lesson26 - 实战分析:评论功能(五)
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson26 转载请注明出处,保留原文链接和作者信息. (本文未审核) 持久化评论 同样地,可以通过类 ...
- React.js 小书 Lesson24 - PropTypes 和组件参数验证
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson24 转载请注明出处,保留原文链接和作者信息. 我们来了到了一个非常尴尬的章节,很多初学的朋友 ...
随机推荐
- HTTP、MQTT、WebSocket有什么区别
https://blog.csdn.net/linyunping/article/details/81950185 相同点:均为OSI 7层模型(应用层.表示层.会话层.传输层.网络层.数据链路层.物 ...
- 关于redis的使用总结
简介 redis是一个开源的用c语言编写的数据库,但并不像常规的关系型数据库那样把数据存储在表中 , 而是像Java中的Map集合一样,存储的是一系列key=value键值对,redis属于NoSQL ...
- C语言 指针在函数传参中的使用
int add(int a, int b) //函数传参的时候使用了int整型数据,本身是数值类型.实际调用该函数时,实参将自己拷贝一份,并将拷贝传递给形参进行运算.实参自己实际是不参与运算的.所 ...
- python-day5爬虫基础之正则表达式2
dot: '.'匹配任意的字符 '*'匹配任意多个(0到多个) 如图所示, 程序运行结果是abc,之所以没有匹配\n,是因为\n是换行符,它就代表这个字符串是两行的,而正则表达式是一行一行去匹配的.在 ...
- Eclipse打包Jar单独使用
今天做了一个刷***的功能,代码很简单,只有几十行代码,我开始是在eclipse里面跑的,后面觉得在里面跑不舒服,我就想把他单独作为一个jar文件单独运行,里面使用了第三方jar包,下面记录一下步骤. ...
- DRF框架之ModelSerializer序列化器
ModelSerializer是Serializer的子类,序列化和反序列化跟Serializer一样. ModelSerializer与常规的Serializer相同,但提供了: 基于模型类自动生成 ...
- Linux实验总结(第二周)
测试一--vi 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号 用Vi输入图中代码,并用gcc编译通过 在Vi中使用K查找printf的帮助文档 提交vi编辑过程截图,要全屏,包含自己的 ...
- 跟踪路由(tracert)及ping命令
由于最近学校网络不好,老是有问题,加上最近写了个数据展示系统,要部署到买的域名下,用到了这两个命令 首先,一台服务器,一台工作站,一个笔记本(我的,来测试ip是否通的) 服务器已经部署了三个网站(一个 ...
- shell day01总结
,Iptables –Z 清空再计数 内存是如何工作的?是干什么的? 随机存取存储器又称作“随机存储器”,是与CPU直接交换的内部存储器,也叫主存.它可以随时读写,而且速度很快,通常作为操作系统或其他 ...
- The website is API(2)
一.Beautifu Soup库 from bs4 import BeautifulSoup soup = BeautifulSoup(demo,"html.parser") Ta ...