React的基础知识:Context

1. Context

在 React 中,Context 提供了一种通过组件树传递数据的方式,无需手动在每个层级传递 props。这在处理一些全局应用状态时非常有用,比如用户认证、主题、语言偏好等。

  1. 如何使用 Context
    创建 Context:首先,你需要使用 React.createContext 创建一个新的 Context 对象。
javascript 复制代码
const MyContext = React.createContext(defaultValue);

这里的 defaultValue 是当组件没有被任何 Provider 包裹时,消费组件(Consumer)会使用的值。

  1. 提供 Context 值:使用 <Context.Provider> 组件来包裹你的组件树,以便提供 Context 值。
java 复制代码
<MyContext.Provider value={/* 一些值 */}>
  <ChildComponent />
</MyContext.Provider>

value 属性可以是任何你想要传递给消费组件的数据,它可以是一个对象,也可以是一个函数。

  1. 消费 Context 值
    使用 useContext Hook:useContext 是一个 Hook,它允许函数组件直接订阅 Context 的变化。
javascript 复制代码
const value = useContext(MyContext);

示例

以下是一个简单的 Context 示例,展示了如何创建和使用 Context 来共享一个主题颜色。

javascript 复制代码
// 创建 Context
const ThemeContext = React.createContext('light');

// 提供 Context 值
function App() {
  return (
    <ThemeContext.Provider value="dark">
      <Toolbar />
    </ThemeContext.Provider>
  );
}

// 消费 Context 值
function Toolbar() {
  return (
    <div>
      <ThemeButton />
    </div>
  );
}

function ThemeButton() {
  const theme = useContext(ThemeContext);
  return <button>{theme === 'dark' ? 'Light' : 'Dark'}</button>;
}

在这个例子中,ThemeContext 被用来在 App 组件和 ThemeButton 组件之间共享当前的主题颜色。App 组件通过 ThemeContext.Provider 提供了主题颜色的值,而 ThemeButton 组件使用 useContext Hook 来消费这个值。

相关推荐
陈随易23 分钟前
前端大咖mizchi不满Rust、TypeScript却爱上MoonBit
前端·后端·程序员
whinc2 小时前
🚀 两年小程序开发,我把踩过的坑做成了开源 Skills
前端·微信小程序·ai编程
兆子龙3 小时前
ahooks useRequest 深度解析:一个 Hook 搞定所有请求
java·javascript
兆子龙3 小时前
React Suspense 从入门到实战:让异步加载更优雅
java·javascript
sure2823 小时前
React Native中创建自定义渐变色
前端·react native
KKKK3 小时前
SSE(Server-Sent Events)流式传输原理和XStream实践
前端·javascript
子兮曰4 小时前
Humanizer-zh 实战:把 AI 初稿改成“能发布”的技术文章
前端·javascript·后端
Din4 小时前
主动取消的防抖
前端·javascript·typescript
百度地图汽车版4 小时前
【AI地图 Tech说】第九期:让智能体拥有记忆——打造千人千面的小度想想
前端·后端