前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React学习:context

React学习:context

作者头像
爱明依
发布2019-04-27 20:56:04
3840
发布2019-04-27 20:56:04
举报
文章被收录于专栏:爱明依爱明依

版权声明:欢迎关注博主公众号:矿洞程序员 https://blog.csdn.net/qq_32423845/article/details/89334853

 实现主题切换

一、定义2中不同主题

代码语言:javascript
复制
const themes = {
    light: {
        classnames: 'btn btn-primary',
        bgColor: 'red',
        color: '#000'
    },
    dark: {
        classnames: 'btn btn-light',
        bgColor: '#blue',
        color: '#fff'
    },
}

二、定义Context;

代码语言:javascript
复制
import React from 'react'

const ThemeContext =React.createContext()

export default ThemeContext

三、使用context.Provider

代码语言:javascript
复制
​
   render() {
        return (
            <ThemeContext.Provider value={themes.light}>
                <div className="App">
                    <header className={"App-header"}>
                        <img src={logo} className={"App-logo"} alt={"logo"}/>
                        <h2>欢迎来到矿洞程序员</h2>
                        <a href="#theme-switcher" className="btn btn-light" onClick={()=>{this.changeTheme('light')}}>浅色主题</a>
                        <a href="#theme-switcher" className="btn btn-secondary" onClick={()=>{this.changeTheme('dark')}}>深色主题</a>
                    </header>
                    <ThemeBar/>
                </div>
            </ThemeContext.Provider>
        );
    }

​

四:定义样式消费组件

代码语言:javascript
复制
import  React from  'react'
import ThemeContext from './Theme-context'

const ThemeBar = () =>{
    return (
        <ThemeContext.Consumer>
            {
                theme=>{
                    // console.log(theme)
                    return (
                        <div className="alert mt-5" style={{backgroundColor:theme.bgColor,color:theme.color}}>样式区域
                         <button>样式按钮</button>
                        </div>
                     )
                }
            }
        </ThemeContext.Consumer>
    )
}
export default ThemeBar

五、查看效果:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年04月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档