useContext

1、在大厂已经使用useContext来代替Redux等状态管理工具

2、在众多react状态管理工具中,MobX和Redux-Saga提供了异步方法。

3、Mobx,Redux,Saga,DVA, ZuStand是比较常见的,也有redux-saga,react-redux等

4、在Redux中,异步操作需要借助第三方库reduc-thunk、redux-promise、redux-saga等。在Mobx中(OOP 风格),可以直接定义异步action,只需要写成generator形式的函数即可。

5、习惯了Vuex、Pinia那一套,推荐使用Mobx。如果是大项目,大团队协作开发推荐使用Redux

6、Prop Drilling就是一种传值方式,具体表现为父->子->孙,子组件不会使用的到,只在孙组件使用,代码冗余,不好维护。

import { useState, createContext, useContext } from "react";

const UserContext = createContext(null);

const Example2 = () => {
  return (
    <div>
      <Parent />
    </div>
  );
};

const Parent = () => {
  const [username, setUsername] = useState("liuyi");

  return (
    <UserContext.Provider value={{ username, setUsername }}>
      <h1>父组件</h1>
      你好 {username}
      <Child />
    </UserContext.Provider>
  );
};

const Child = () => {
  const { username, setUsername } = useContext(UserContext);
  return (
    <div>
      <h2>子组件 {username}</h2>
      <GrandChild />
    </div>
  );
};

const GrandChild = () => {
  const { setUsername } = useContext(UserContext);
  return (
    <div>
      <h3>孙组件</h3>
      <button
        onClick={() => {
          setUsername("xiaobai");
        }}
      >
        修改用户名
      </button>
    </div>
  );
};

export default Example2;
相关推荐
m0_7482309442 分钟前
Redis 通用命令
前端·redis·bootstrap
YaHuiLiang1 小时前
一切的根本都是前端“娱乐圈化”
前端·javascript·代码规范
界面开发小八哥1 小时前
可视化工具SciChart如何结合Deepseek快速创建一个React仪表板?
react.js·信息可视化·数据可视化·原生应用·scichart
ObjectX前端实验室2 小时前
个人网站开发记录-引流公众号 & 谷歌分析 & 谷歌广告 & GTM
前端·程序员·开源
CL_IN2 小时前
企业数据集成:实现高效调拨出库自动化
java·前端·自动化
浪九天4 小时前
Vue 不同大版本与 Node.js 版本匹配的详细参数
前端·vue.js·node.js
Java知识技术分享4 小时前
使用LangChain构建第一个ReAct Agent
python·react.js·ai·语言模型·langchain
qianmoQ4 小时前
第五章:工程化实践 - 第三节 - Tailwind CSS 大型项目最佳实践
前端·css
椰果uu5 小时前
前端八股万文总结——JS+ES6
前端·javascript·es6
微wx笑5 小时前
chrome扩展程序如何实现国际化
前端·chrome