react实现换肤功能的示例代码


Posted in Javascript onAugust 14, 2018

一.目标

提供几种主题色给用户选择,然后根据用户的选择改变应用的主题色;

react实现换肤功能的示例代码

二.实现原理

1.准备不同主题色的样式文件;

2.将用户的选择记录在本地缓存中;

3.每次进入应用时,读取缓存,根据缓存的信息判断要加载哪个样式文件即可;

三.具体实现思路

1.准备四个对应不同主题色的样式文件:

![](https://images2018.3water.com/blog/1178432/201808/1178432-20180813142303707-1847250400.png)

2.在主页给用户提供主题色选择的html:

```
  <span style={{color:"#0097e5"}} >
        <i className={`skinTag skinTag0 ${this.state.skinIndex==0?'active':''}`} onClick={this.toggleSkin.bind(this,0)}></i>
        <i className={`skinTag skinTag1 ${this.state.skinIndex==1?'active':''}`} onClick={this.toggleSkin.bind(this,1)}></i>
        <i className={`skinTag skinTag2 ${this.state.skinIndex==2?'active':''}`} onClick={this.toggleSkin.bind(this,2)}></i>
        <i className={`skinTag skinTag3 ${this.state.skinIndex==3?'active':''}`} onClick={this.toggleSkin.bind(this,3)}></i>
  </span>

  toggleSkin(index){
   setItem('skin',index) //将最新的主题色名称更新到本地缓存中 
   this.loadingToast('主题色更换中..')
   location.reload()    //主题色更改后刷新页面
 }

```

3.主题色选择后,在入口文件根据缓存判断要加载哪个主题色样式:

var aa=''
  if(getItem('skin')=='0'){
    aa='app'
  }else if(getItem('skin')=='1'){
    aa='app-skin1'
  }else if(getItem('skin')=='2'){
    aa='app-skin2'
  }else if(getItem('skin')=='3'){
    aa='app-skin3'
  }else{
    aa='app'
  }
 require([`./static/css/${aa}.scss`], function(list){});

在这里遇到了一个坑,刚开始的时候我是直接用 require(./static/css/${aa}.scss);的,结果不知道为什么把四个样式文件都加载了,改成上面那个就没问题了,有空再研究一下require;

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 1.0.4 - New Wave Javascript(js源文件)
Jan 15 Javascript
用javascript自动显示最后更新时间
Mar 15 Javascript
jquery之Document元素选择器篇
Aug 14 Javascript
JavaScript经典效果集锦
Jul 06 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
Dec 31 Javascript
jQuery实现根据滚动条位置加载相应内容功能
Jul 18 Javascript
JQuery之proxy实现绑定代理方法
Aug 01 Javascript
js利用clipboardData实现截屏粘贴功能
Oct 12 Javascript
浅谈react.js 之 批量添加与删除功能
Apr 17 Javascript
JavaScript实现数值自动增加动画
Dec 28 Javascript
React中如何引入Angular组件详解
Aug 09 Javascript
javascript实现图片轮换动作方法
Aug 07 Javascript
详解vue-cli3使用
Aug 14 #Javascript
详解angular部署到iis出现404解决方案
Aug 14 #Javascript
学习React中ref的两个demo示例
Aug 14 #Javascript
React 无状态组件(Stateless Component) 与高阶组件
Aug 14 #Javascript
浅析Vue实例以及生命周期
Aug 14 #Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
Aug 14 #Javascript
详解angular应用容器化部署
Aug 14 #Javascript
You might like
PHP高自定义性安全验证码代码
2011/11/27 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
php中foreach结合curl实现多线程的方法分析
2016/09/22 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
2013/08/05 Javascript
javaScript实现浮点数转十六进制字符
2013/10/29 Javascript
jQuery中$.fn的用法示例介绍
2013/11/05 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现树莓派WiFi断线自动重连的实例代码
2017/03/16 Python
Python 常用的安装Module方式汇总
2017/05/06 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
python可视化实现代码
2019/01/15 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
2019/03/18 Python
python实现加密的方式总结
2020/01/19 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
Python实现GIF图倒放
2020/07/16 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
用python对excel查重
2020/12/07 Python
使用HTML5的表单验证的简单示例
2015/09/09 HTML / CSS
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
什么是事务?为什么需要事务?
2012/01/09 面试题
大一学生个人总结
2015/02/15 职场文书
公司新员工欢迎词
2015/09/30 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS