React16—— Context API

背景介绍

   假设有以下组件结构,并且只有D组件会用到A组件内的数据,那么就需要将props传递很多层,这样不仅书写起来很繁琐同时还会为夹在中间的组件引入不必要的 props

<A>
  <B>
    <C>
      <D />
    </C>
  </B>
</A>

  Context API解决这类问题就很好用,很多流行框架(例如redux,mobx等)都在使用它。但是在React16.3.0之前,官方还是不推荐我们使用。这篇文章说明了使用旧版Context会出现的问题以及解决办法

  但是React16.3.0发布了更加高效、稳定的Context API

Context API

  Context API主要由以下几个部分:

  • React.createContext:创建一个 Context 对象,包含两个属性名为Provider和Consumer的组件
const MyContext = React.createContext(defaultValue);
  • Provider组件:它接受一个value属性,将其传给需要使用context值的子组件,value属性的值可以是任何JS中的数据类型
<MyContext.Provider value={someValue}>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
React 中,可以通过 Context API 来进行全局的数据传递,i18n 配置也可以通过 Context API 进行传递。 1. 首先,创建一个 i18n 配置对象,例如: ``` const i18nConfig = { locale: 'zh-CN', messages: { 'hello': '你好', 'bye': '再见' } }; ``` 这里的 `locale` 属性表示当前的语言环境,`messages` 属性则是一个键值对,用于存储不同语言环境下的文本信息。 2. 然后,创建一个 Context 对象,例如: ``` const I18nContext = React.createContext(i18nConfig); ``` 这里的 `I18nContext` 就是我们定义的 Context 对象,它的初始值是我们之前创建的 i18n 配置对象。 3. 在组件中使用 Context 对象,例如: ``` function MyComponent() { const i18n = useContext(I18nContext); return ( <div> <p>{i18n.messages['hello']}</p> <p>{i18n.messages['bye']}</p> </div> ); } ``` 这里的 `useContext` 是 React 提供的一个 Hook,用于从 Context 对象中获取数据。在这个例子中,我们从 `I18nContext` 中获取到 i18n 配置对象,然后根据当前语言环境显示不同的文本信息。 4. 在根组件中设置 Context 对象的值,例如: ``` function App() { const i18nConfig = { locale: 'en-US', messages: { 'hello': 'Hello', 'bye': 'Goodbye' } }; return ( <I18nContext.Provider value={i18nConfig}> <MyComponent /> </I18nContext.Provider> ); } ``` 这里的 `App` 组件是根组件,我们在其中设置 `I18nContext` 的值为英文环境。这样,在整个应用中,所有使用了 `I18nContext` 的组件都将会使用英文环境的文本信息。 通过以上步骤,我们就可以使用 ReactContext API 来进行全局的 i18n 配置传递了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值