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的弹出警告对话框美化插件(警告,确认和提示)
Jun 10 Javascript
JavaScript继承方式实例
Oct 29 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
Mar 05 Javascript
网页运行时提示对象不支持abigimage属性或方法
Aug 10 Javascript
require.js深入了解 require.js特性介绍
Sep 04 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
Dec 12 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
Jan 08 Javascript
深入理解JavaScript中Ajax
Aug 02 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
Nov 01 Javascript
jquery点击展示与隐藏更多内容
Dec 03 Javascript
整理关于Bootstrap列表组的慕课笔记
Mar 29 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
Jul 02 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 文件上传代码(限制jpg文件)
2010/01/05 PHP
PHP 调试工具Debug Tools
2011/04/30 PHP
php设计模式 Command(命令模式)
2011/06/26 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
php顺序查找和二分查找示例
2014/03/27 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
PHP制作用户注册系统
2015/10/23 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
$()JS小技巧
2007/07/21 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
Python中利用xpath解析HTML的方法
2018/05/14 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
Pytorch之parameters的使用
2019/12/31 Python
锐步英国官网:Reebok英国
2019/11/29 全球购物
中药专业大学生医药工作求职信
2013/10/25 职场文书
甜美蛋糕店创业计划书
2014/01/30 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
思想政治表现评语
2015/01/04 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书