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 相关文章推荐
javascript之锁定表格栏位
Jun 29 Javascript
js下写一个事件队列操作函数
Jul 19 Javascript
简单实用的全选反选按钮例子
Oct 18 Javascript
浅谈JavaScript函数参数的可修改性问题
Dec 05 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
Feb 12 Javascript
jQuery的几个我们必须了解的特点
May 03 Javascript
Nginx上传文件全部缓存解决方案
Aug 17 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
Jun 21 Javascript
最全的Javascript编码规范(推荐)
Jun 22 Javascript
jQuery插件ContextMenu自定义图标
Mar 15 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
Aug 25 Javascript
解决vuex数据页面刷新后初始化操作
Jul 26 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中把对象数组转换成普通数组的方法
2015/07/10 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
linux下php上传文件注意事项
2016/06/11 PHP
laravel 框架执行流程与原理简单分析
2020/02/01 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
2021/03/09 Javascript
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
js中new一个对象的过程
2017/02/20 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
2020/06/05 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
大学生毕业自我鉴定范文
2013/09/19 职场文书
竞选班干部演讲稿
2014/04/24 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
环保建议书范文
2015/09/14 职场文书
python3美化表格数据输出结果的实现代码
2021/04/14 Python
教你使用Jenkins集成Harbor自动发布镜像
2022/04/03 Servers