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代码)
Oct 29 Javascript
EXT中xtype的含义分析
Jan 07 Javascript
第一个JavaScript入门基础 document.write输出
Feb 22 Javascript
取得窗口大小 兼容所有浏览器的js代码
Aug 09 Javascript
JQuery扩展插件Validate 1 基本使用方法并打包下载
Sep 05 Javascript
javaScript(JS)替换节点实现思路介绍
Apr 17 Javascript
原生js实现图片放大缩小计时器效果
Jan 20 Javascript
js验证手机号、密码、短信验证码代码工具类
Jun 24 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
Apr 13 Javascript
深入浅出理解JavaScript高级定时器原理与用法
Aug 02 Javascript
Vue.js实现可排序的表格组件功能示例
Feb 19 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
Jul 13 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
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php Undefined index的问题
2009/06/01 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
理解PHP中的stdClass类
2014/04/18 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
python开启多个子进程并行运行的方法
2015/04/18 Python
Python常见异常分类与处理方法
2017/06/04 Python
基于python 字符编码的理解
2017/09/02 Python
python中装饰器级连的使用方法示例
2017/09/29 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
生产车间主任的个人自我鉴定
2013/10/25 职场文书
政治思想表现评语
2014/05/04 职场文书
文艺节目主持词
2015/07/06 职场文书
考研经验交流会策划书
2015/11/02 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
基于Python绘制子图及子图刻度的变换等的问题
2021/05/23 Python
浅谈pytorch中的dropout的概率p
2021/05/27 Python
Python requests用法和django后台处理详解
2022/03/19 Python