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 拾色器插件发布-jquery.icolor.js
Oct 20 Javascript
各情景下元素宽高的获取实现代码
Sep 13 Javascript
JQ获取动态加载的图片大小的正确方法分享
Nov 08 Javascript
jquery简单实现鼠标经过导航条改变背景图
Dec 17 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
Mar 20 Javascript
Angularjs实现分页和分页算法的示例代码
Dec 23 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
Apr 21 jQuery
JS 中LocalStorage和SessionStorage的使用
Aug 17 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
Oct 17 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
Oct 23 Javascript
详解plotly.js 绘图库入门使用教程
Feb 23 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
Oct 28 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多种序列化与反序列化的方法
2013/06/06 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
PHP的pcntl多进程用法实例
2015/03/19 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
Javascript浅谈之this
2013/12/17 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
JavaScript设置body高度为浏览器高度的方法
2015/02/09 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
JS中如何实现Laravel的route函数详解
2017/02/12 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
基于jQuery实现瀑布流页面
2017/04/11 jQuery
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
Python遍历numpy数组的实例
2018/04/04 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
python进行TCP端口扫描的实现
2018/12/21 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
组织关系转移介绍信
2014/01/16 职场文书
学习十八大报告感言
2014/02/04 职场文书
六年级语文教学反思
2016/03/03 职场文书
深度学习详解之初试机器学习
2021/04/14 Python