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 相关文章推荐
自写简单JS判断是否已经弹出页面
Oct 20 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
Nov 20 Javascript
Jquery中offset()和position()的区别分析
Feb 05 Javascript
onmouseover事件和onmouseout事件全面理解
Aug 15 Javascript
Angular2使用jQuery的方法教程
May 28 jQuery
详解react-router如何实现按需加载
Jun 15 Javascript
React组件重构之嵌套+继承及高阶组件详解
Jul 19 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
Oct 20 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
Mar 07 Javascript
详解Vue项目中实现锚点定位
Apr 24 Javascript
在vue中使用jsx语法的使用方法
Sep 30 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
Sep 07 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 array 的加法操作代码
2010/07/24 PHP
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
PHP代码优化之成员变量获取速度对比
2014/02/28 PHP
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
jQuery层次选择器选择元素使用介绍
2013/04/18 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
JS将表单导出成EXCEL的实例代码
2013/11/11 Javascript
JS判断对象是否存在的10种方法总结
2013/12/23 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
Es6 Generator函数详细解析
2018/02/24 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
JS变量提升及函数提升实例解析
2020/09/03 Javascript
Python新手实现2048小游戏
2015/03/31 Python
PyCharm安装第三方库如Requests的图文教程
2018/05/18 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
python实现维吉尼亚加密法
2019/03/20 Python
浅析python实现动态规划背包问题
2020/12/31 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
css3实现书本翻页效果的示例代码
2021/03/08 HTML / CSS
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
电气工程师岗位职责
2015/02/12 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android