react中使用context进行主题色切换

该文章展示了一个使用React进行组件化开发的例子,包括Left、Top组件的创建,以及通过context传递状态,实现颜色主题的切换。CSS用于布局,如flexbox,同时有Ding组件用于交互,允许用户改变左侧导航的颜色主题。
摘要由CSDN通过智能技术生成
//left组件
import React, { Component } from 'react';
import Color from '../context/context';

class Left extends Component {
    constructor(props) {
        super(props);
        this.state = {  };
    }
    render() {
        let Color=this.context
        return (
            <div className={Color}>左边</div>
        );
    }
}
Left.contextType=Color

export default Left;

Top.jsx文件

//右边的上导航组件
import React, { Component } from 'react';

class Top extends Component {
    constructor(props) {
        super(props);
        this.state = {  };
    }
    render() {
        return (
            <>
           
            <div className='top-nav'>上边</div>
           
           
            </>
        );
    }
}

export default Top;

app.css文件页面修饰

.box{
    width: 100%;
    height: 100%;
   display: flex;
}
.box-left{
    width: 190px;
 
    border-right: 1px solid black;
  
}
.box-right{
    flex: 1;
    display: flex;
    flex-direction: column;
}
.box-right-top{
    border-bottom: 1px solid black;
    height: 100px;
}
.box-right-bottom{
    flex: 1;
}

App.jsx

//父组件
import React, { Component } from 'react';
//引入子组件
import Left from './compontent/Left';

import Top from './compontent/Top';
import Ding from './view/Ding';
//引入context对象
import Color from './context/context'
import "./assets/css/app.css"

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {  };
  }
  render() {
    return (
      <>
      <Color.Provider value="dark">
      <div className='box'>
        <div className='box-left'>
          <Left></Left>
          </div>
        <div className='box-right'>
      
          <div className='box-right-top'>
            <Top></Top>
            </div>
          <div className='box-right-bottom'>
            <Ding></Ding>
            </div>
          
        </div>
        
      </div>
      </Color.Provider>
      </>
    );
  }
}


export default App;

view文件夹下的Ding文件

import React, { Component } from 'react';

class Ding extends Component {
    constructor(props) {
        super(props);
        this.state = {  };
    }
    render() {
        return (
            <>
            <div>
                <span>切换颜色</span>
                <div>
                <button>左菜单 导航 绿色</button></div>
            </div>
           </>
        );
    }
}

export default Ding;

context文件夹下的context.js

//创建context对象
import React from "react"
let Color=React.createContext()
export default Color

index.css全局修饰

* {
  margin: 0;
  padding: 0;
}
html,
body,
#root {
  width: 100%;
  height: 100%;
  overflow: hidden;
}
.dark{
  background-color:green;
}

文件图片

效果图如下:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 react-i18next 进行英文切换,需要先安装 react-i18next 和 i18next 两个模块。可以使用以下命令安装: ``` npm install react-i18next i18next ``` 然后,在你的应用程序创建一个 i18n 实例,并且设置默认语言和翻译文本。例如: ```javascript import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; i18n.use(initReactI18next).init({ resources: { en: { translation: { hello: 'Hello', world: 'World', }, }, zh: { translation: { hello: '你好', world: '世界', }, }, }, lng: 'en', fallbackLng: 'en', interpolation: { escapeValue: false, }, }); ``` 在这个例子,我们创建了一个 i18n 实例,并且设置了两种语言(英文和文),以及翻译文本。默认语言是英文,fallbackLng 指定了如果当前语言不存在时要回退到的语言。 接下来,在你的组件使用 `useTranslation` 钩子函数来获取翻译文本,并且使用 `i18n.changeLanguage` 方法来切换语言。例如: ```jsx import React from 'react'; import { useTranslation } from 'react-i18next'; function Example() { const { t, i18n } = useTranslation(); const changeLanguage = (lng) => { i18n.changeLanguage(lng); }; return ( <div> <h1>{t('hello')}</h1> <p>{t('world')}</p> <button onClick={() => changeLanguage('en')}>English</button> <button onClick={() => changeLanguage('zh')}>文</button> </div> ); } export default Example; ``` 在这个例子,我们使用 `useTranslation` 钩子函数获取翻译文本,然后在组件渲染翻译文本和切换语言的按钮。点击按钮时,调用 `changeLanguage` 方法来切换语言。 通过这种方式,你就可以使用 react-i18next 在你的应用程序实现英文切换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值