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;
相关推荐
dy17173 小时前
element-plus表格默认展开有子的数据
前端·javascript·vue.js
2501_915918416 小时前
Web 前端可视化开发工具对比 低代码平台、可视化搭建工具、前端可视化编辑器与在线可视化开发环境的实战分析
前端·低代码·ios·小程序·uni-app·编辑器·iphone
程序员的世界你不懂7 小时前
【Flask】测试平台开发,新增说明书编写和展示功能 第二十三篇
java·前端·数据库
索迪迈科技7 小时前
网络请求库——Axios库深度解析
前端·网络·vue.js·北京百思可瑞教育·百思可瑞教育
gnip7 小时前
JavaScript二叉树相关概念
前端
attitude.x8 小时前
PyTorch 动态图的灵活性与实用技巧
前端·人工智能·深度学习
β添砖java8 小时前
CSS3核心技术
前端·css·css3
空山新雨(大队长)8 小时前
HTML第八课:HTML4和HTML5的区别
前端·html·html5
猫头虎-前端技术9 小时前
浏览器兼容性问题全解:CSS 前缀、Grid/Flex 布局兼容方案与跨浏览器调试技巧
前端·css·node.js·bootstrap·ecmascript·css3·媒体