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 相关文章推荐
firefox firebug中文入门教程 脚本之家新年特别版
Jan 02 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
Sep 16 Javascript
jqgrid 表格数据导出实例
Nov 21 Javascript
node.js中的fs.fchmod方法使用说明
Dec 16 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
Jan 23 Javascript
Javascript中的作用域和上下文深入理解
Jul 03 Javascript
JS中使用变量保存arguments对象的方法
Jun 03 Javascript
jQuery鼠标事件总结
Oct 13 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
Dec 26 Javascript
vue 国际化 vue-i18n 双语言 语言包
Jun 07 Javascript
webpack 如何解析代码模块路径的实现
Sep 04 Javascript
Vue.Draggable实现交换位置
Apr 07 Vue.js
详解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
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
2015/10/22 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
javascript 拖动表格行实现代码
2011/05/05 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
验证码按回车不变解决方法
2013/03/29 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
微信小程序使用Socket的实例
2017/09/19 Javascript
jQuery第一次运行页面默认触发点击事件的实例
2018/01/10 jQuery
WebPack配置vue多页面的技巧
2018/05/15 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
python逆向入门教程
2018/01/15 Python
什么是Python中的顺序表
2020/06/02 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
CSS3实现线性渐变用法示例代码详解
2020/08/07 HTML / CSS
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
工地资料员岗位职责
2013/12/31 职场文书
尊师重教演讲稿
2014/09/04 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
行风评议整改报告
2014/11/06 职场文书
店铺转让协议书
2014/12/02 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
Python绘制分类图的方法
2021/04/20 Python