React: hook(3) useContext

这篇博客展示了如何在React应用中创建一个ThemeContext,用于管理应用的主题。通过使用`createContext`创建上下文,然后在组件树中传递主题,实现了按钮组件根据主题背景和前景颜色动态改变样式。主要涉及的技术包括React hooks(useState, useContext, useLayoutEffect)以及react-router-dom的导航元素。

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

import logo from './logo.svg';
import { Routes, Route, Link } from "react-router-dom";
import {react,useState,useEffect,useLayoutEffect,useContext} from "react"
import './App.css';
import React from "react"

const themes = {
  light: {
    foreground: "#000000",
    background: "#eeeeee"
  },
  dark: {
    foreground: "#ffffff",
    background: "#222222"
  }
};


const ThemeContext = React.createContext(themes.light);

function App() {
  return (
    <ThemeContext.Provider value={themes.dark}>
      <Toolbar />
    </ThemeContext.Provider>
  );
}

function Toolbar(props) {
  return (
    <div>
      <ThemedButton />
    </div>
  );
}

function ThemedButton() {
  const theme = useContext(ThemeContext);
  return (
    <button style={{ background: theme.background, color: theme.foreground }}>
      I am styled by theme context!
    </button>
  );
}



export default App;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值