zoukankan      html  css  js  c++  java
  • uniapp_切换主题

    1. 先创建一个index.vue文件:
      image
    2. 在uni.scss 里用变量定义颜色:
      image
    3. 配置浅色 css 样式:
      image
    4. 配置暗色主题颜色:   只需要改变颜色变量名;
      image

    5. image
    6. 创建一个store文件:
      在里面创建一个  index.js  和  modules文件夹
      image
      在 theme.js  里面 配置如下:
    7. export default {
      	state: {
      		curThemeType: 'light',		
      	},
      	getters: {
      		getCurThemeType(state) {
      			return state.curThemeType
      		},		
      	},
      	mutations: {
      		setCurThemeType(state,data) {
      			state.curThemeType = data
      		},		
      	},
      }

      在 index.js里 引入Vuex 和 theme.js

      import Vue from 'vue'
      import Vuex from 'vuex'
      
      Vue.use(Vuex);
      import theme from './modules/theme'
      export default new Vuex.Store({
          modules:{
              theme
      	}
      })

      最后在main.js里引入 刚刚创建的store文件:
      image

    8. 使用 mixin混合机制,让每个组件都能获得拥有 mixin中的方法和属性:
      创建一个utils文件夹 和一个 miixn.js文件
      在mixin.js里引入  Vuex里的方法
      image

      然后再main.js里引入  minxin.js:
      image
    9. 最后子需要 在index.vue里配置如下:
      image
    10. 点击切换主题:
    11. import {mapMutations} from "vuex"
      	export default {
      		data() {
      			return {
      				title: 'Hello',
      				fag: false
      			}
      		},
      		onLoad() {
      
      		},
      		methods: {
      		...mapMutations(['setCurThemeType']),
      			handle(val) {
      				if(val == 'light'){
      					this.setCurThemeType(val)
      				}else if(val == 'dark'){
      					this.setCurThemeType(val)
      				}
      			}
      		}
      	}
    12. 总结:
      ⊙ 实际上只是切换了 class类名  layout-wrap  和 login-wrap-dark
      ⊙ 使用Vuex的作用: 通过 this.setCurThemeType()传参 light 或者 drak, 然后将主题存在 state里面;方便任何组件使用;
      ⊙ 使用ximin()的作用:
              因为每个页面都会使用到   <view class="layout-wrap" :class="getCurThemeType=='dark' ? 'login-wrap-dark':''">
              所以直接在 mixin.js里面 引用了 Vuex, 并且把Getters 和 Mutations 存放在  computed 和  methods里面;
              最后通过  Vue.mixin(themeMixin)  把这computed 和  methods混入到所有 Vue组件里面;
              这样任何组件可以直接使用 computed 里面的 getCurThemeType,

    13. 配置默认显示主题:
      在APP.vue里 配置如下:
      onLaunch()   这个方法是当小程序加载完毕后就执行;
      如果缓存有 主题,就用缓存中的主题, 没有则用 light主题
      image

  • 相关阅读:
    Django中的session的使用
    《Vue笔记01: 我与唐金州二三事》
    CSS之border绘制三角形
    如何增强前端代码的健壮性
    flex招式心法
    码出优美
    可保图片不变形的object-fit
    three.js基础前置知识
    【JS档案揭秘】第四集 关于this的讨论到此为止
    【JS档案揭秘】第三集 深入最底层探秘原型链
  • 原文地址:https://www.cnblogs.com/cl1998/p/13603465.html
Copyright © 2011-2022 走看看