react中使用useContext跨层级通信

本文介绍了如何在React中使用useContext实现模块化开发中的状态管理,通过MyContext提供者和子组件的 useContext,实现实时数据同步。重点展示了在Index组件中修改state并影响子组件Child1和Child2的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模块化开发使用useContext

import React, { useState } from "react";
import Child1 from "./Child1";
import Child2 from "./Child2";
import MyContext from "./context";

export default function Index() {
  const [state, setState] = useState({
    name: "xx",
    age: 24,
    arr: [1, 2, 3],
  });

  return (
    <div>
      <h1>Home</h1>
      <button
        onClick={() => {
          // 修改state中的数据,context向子组件传递的数据也会更新
          setState((pre) => ({ ...pre, name: "lala" }));
        }}
      >
        home-btn
      </button>
      <MyContext.Provider value={{ state, setState }}>
        <Child1 />
        <Child2 />
      </MyContext.Provider>
    </div>
  );
}

// Child1 - 子组件
import { useContext } from 'react'
function Child1() {
	// 这里的state、setState和父组件中声明的useState数据同步
	const { state, setState } = useContext(MyContext); // MyContext 是上面引入的context
	
	return <div>{state.name}</div>
}

// Child2 - 子组件
function Child2() {
	// 这里的state、setState和父组件中声明的useState数据同步
	const { state, setState } = useContext(MyContext); // MyContext 是上面引入的context
	
	return <div>{state.name}</div>
}

上述 import 引入的 MyContext 可以直接在模块文件夹里面新建context.js

import React from "react";

const myContext = React.createContext({});

export default myContext;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值