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;
相关推荐
Jackson__5 分钟前
聊聊 JS 中的可选链 ?.
前端
前端小崔11 分钟前
前端面试题之ES6保姆级教程
开发语言·前端·javascript·面试·职场和发展·ecmascript·es6
Bug从此不上门20 分钟前
【无标题】
前端·javascript·uni-app·vue
HarderCoder21 分钟前
ByAI:Redux中间件的原理和ts简化实现
前端·redux
贩卖纯净水.24 分钟前
Webpack依赖
前端·webpack·node.js
crary,记忆25 分钟前
微前端 - Module Federation使用完整示例
前端·react·angular
不知几秋31 分钟前
Spring Boot
java·前端·spring boot
程序猿ZhangSir35 分钟前
Vue3 项目的基本架构解读
前端·javascript·vue.js
HarderCoder39 分钟前
ByAI: Redux的typescript简化实现
前端
90后的晨仔1 小时前
RxSwift 框架解析
前端·ios