react useContext跨层级组件传值

案例一

  • 父组件
import ContextComp,{TestContext} from './components/ContextComp'
function App(){
  const showName = (name) => {
    console.log(name)
  }
  const ItemComp = () => {
    const {name} = React.useContext(TestContext)
    return <div onClick={() => {showName(name)}}>{name}</div>
  }
  return(
    <div>
      <ContextComp>
        <ItemComp></ItemComp>
      </ContextComp>
    </div>
  )
}
  • 子组件
import React from 'react'
export const TestContext = React.createContext({})
function ContextComp(props){
  let list = ['ma','lin','shu']
  return (
    <div>
      {
        list.map((item,index) => <div>
          <TestContext.Provider
            value={{name:item}}
          >
            {props.children}
          </TestContext.Provider>
        </div>)
      }
    </div>
  )
}
export default ContextComp

案例二

import {  createContext, useContext } from 'react'
<div className="test_div">
        <MyContext.Provider value={msgObj}>
        	testDiv<Son></Son>
        </MyContext.Provider>
</div>
  const GrandSon = () => {

    const msgObj = useContext(MyContext)
    return (
      <div className='grand_son_comp'>grand_son_comp{msgObj.name}</div>
    )
  }

  const Son = () => {
    return (
      <div className='son_comp'>son_comp<GrandSon></GrandSon></div>
    )
  }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值