React里的Context - 不同js文件下的组件

作用: 跨组件传递数据

如果出现层级比较多的情况下(例如:爷爷传递数据给孙子),我们会使用Context来进行传递。

使用步骤[主要注意的是Consumer 要按需导出导入]

调用 React.createContext() 创建 Provider(提供数据) 和 Consumer(消费数据) 两个组件 【Consumer 组件 会一层一层往上找,找到 其 最近的 Provider 的数据】

根组件App.js

export const { Provider, Consumer } = React.createContext()
import React from 'react'
import Grandfa from './grandfa'
// 创建 Provider(提供数据) 和 Consumer(消费数据) 两个组件
export const { Provider, Consumer } = React.createContext()
class App extends React.Component {
  render() {
    return (
      <>
        <Provider value="Context解决层级比较多的 组件间的 通讯">
          <Grandfa />
        </Provider>

      </>
    )
  }
}
export default App

grandfa .js

import React from 'react'
import Fa from './fa'

class Grandfa extends React.Component {
  render() {
    return (
      <div>
        <Fa></Fa>
      </div>
    )
  }
}
export default Grandfa

 fa.js

import React from 'react'
import Son from './son'

class Fa extends React.Component {
  render() {
    return (
      <div>
        <Son></Son>
      </div>
    )
  }
}
export default Fa

son.js 

import React from 'react'
import { Consumer } from './App'

class Son extends React.Component {
  render() {
    return (
      <div>
        <Consumer>{(data) => <p>{data}</p>}</Consumer>
      </div>
    )
  }
}
export default Son

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值