21 react hooks 跨组件传值 Context

该文章介绍了如何在React应用中利用ContextAPI创建一个上下文空间,通过`createContext`和`useContext`Hook进行状态管理和共享,以及在子组件中通过`Provider`和`Consumer`来访问和更新状态。
摘要由CSDN通过智能技术生成

import React, { createContext, useContext, useState } from 'react';
import deepCopy from '@/utils/deepCopy';
// 创建一个上下文空间,本质上是一个组件,首字母大写
const MsgContext = createContext(); //这个要单独在js文件中定义然后导出
export default function Parents() {

    let [num, setnum] = useState(10)
    return (
        // 把数据存放到上下文空间
        <MsgContext.Provider value={{ num, setnum }}>
            <div>
                <Child1 />
                <Child2 />
            </div>
        </MsgContext.Provider>
    )

}
// 方式1
function Child1() {
    //通过useContext从指定的空间MsgContext中获取值
    const msg = useContext(MsgContext)
    return (
        <>
            <div>{msg.num}</div>
            <div onClick={() => msg.setnum(20)}>add</div>
        </>
    )

}
//方式2
function Child2() {
    //通过useContext从指定的空间MsgContext中获取值
    const msg = useContext(MsgContext)
    return (
        <MsgContext.Consumer>
            {
                msg =>
                    <div>{msg.num}</div>
            }
        </MsgContext.Consumer>
    )

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值