react useContext跨层级组件传值

该博客探讨了React中使用上下文API(Context API)进行组件间通信的两个示例。在案例一中,父组件通过ContextComp创建了一个Context,并在子组件ItemComp中使用useContext来获取并显示Context中的名字。案例二展示了如何在GrandSon组件中通过MyContext从父组件和孙子组件之间传递数据。
摘要由CSDN通过智能技术生成

案例一

  • 父组件
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>
    )
  }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值