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源码分析之Event事件分析
Jun 07 Javascript
jQuery实现表头固定效果的实例代码
May 24 Javascript
jQuery中removeClass()方法用法实例
Jan 05 Javascript
jQuery插件MixItUp实现动画过滤和排序
Apr 12 Javascript
jQuery中next方法用法实例
Apr 24 Javascript
JS实现鼠标滑过显示边框的菜单效果
Sep 21 Javascript
js html css实现复选框全选与反选
Oct 09 Javascript
几行js代码实现自适应
Feb 24 Javascript
详解vue引入子组件方法
Feb 12 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
Aug 26 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
Sep 19 Javascript
vue 解除鼠标的监听事件的方法
Nov 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
用PHP发电子邮件
2006/10/09 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
2011/10/30 PHP
PHP+MySQL投票系统的设计和实现分享
2012/09/23 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
json跟xml的对比分析
2008/06/10 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
2015/06/20 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
Weex开发之地图篇的具体使用
2019/10/16 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
使用python装饰器验证配置文件示例
2014/02/24 Python
用Python下载一个网页保存为本地的HTML文件实例
2018/05/21 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
Python ini文件常用操作方法解析
2020/04/26 Python
在Python中实现字典反转案例
2020/12/05 Python
JAVA程序设计笔试题面试题一套
2015/07/28 面试题
公司爱心捐款倡议书
2014/05/14 职场文书
县级文明单位申报材料
2014/05/23 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
2015年卫生局工作总结
2015/07/24 职场文书
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server