React Context API一览

使用React 16 Context API制作的

文章翻译自Seth CorkerA look at the React Context API,并且不是百分之百原文翻译,一些译者认为并不重要的部分被省略了,同时也加入一些原文内未出现的解释性文字。如果想要阅读原文,请转至https://medium.com/front-end-...

React 16带来了许多非常棒的新功能(虽然异步渲染还是不见踪影),新的Context API便是其中之一。

什么是Context API

Context API包含两个组件,<Provider><Consumer>。若后者(Consumer)存在于前者(Provider)的子组件(children)中,那么无论后者处于前者子组件的哪个位置,前者可以向后者直接提供数据。

应该如何使用Context API

我(作者)制作了一个购物车样例来展示Context API是如何工作的,源码在https://github.com/Darth-Knop...

使用React Context API的一个例子

上图显示了商品是如何加入购物车或从购物车中移除的。每一个商品都有一个Consumer用于显示购物车中该件商品的数量,同时还有一个按钮用来执行存在于Provider中的onAddToCart回调函数。

带有商品列表和添加/移除商品回调函数的provider

<CartContext>的Provider处于上层组件<App>中,同时商品信息列表也存于<App>的state里。这就意味着Provider会随着state的改变而改变,Consumer也会随之收到一个新的value

我们在单独的文件里创建<CartContext>,并且赋予其默认值。这样我们就可以在任何组件中引用它的Provider和Consumer。

import React from 'react';

export const CartContext = 
React.createContext({
  items: []
});

现在我们可以如下图一样,在Consumer中使用value内的值:

Consumer使用了Value里的onRemoveFromCart和items

获得完整样例源代码,请参阅

是否该使用Context API

使用新的Context API可以为在多层嵌套的多个组件中使用共有数据带来极大的便利。React官方文档中也推荐使用Context API储存全局变量,例如当前登入用户,主题样式或是首选语言。使用Context API,可以减少多层prop-drilling的使用或是简化redux state结构。

是否使用Context API取决于程序的复杂程度,在大多数情况下,我(作者)还是推荐使用Redux。毕竟Redux是一个具有成熟生态圈的第三方库,其众多的中间件可以为我们解决许多开发中遇到的困难。在复杂度较小的程序中,Context API可以带来极大的便利。

关于Context API更多更详细的介绍,请参阅React官方文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值