当前位置: 首页 > article >正文

vue-antd-admin——实现全网站选项的切换并实现页面的刷新——技能提升

今天写后台管理系统时,遇到一个需求,是关于内外贸选项的切换。

效果图如下:
在这里插入图片描述
默认是内贸选项,当进行切换时,无论是在哪个页面,当前页面都要进行刷新,并将选项的参数传递到接口中。

下面详细介绍操作步骤:

1.AdminHeader.vue组件添加内外贸选项的切换

1.1 template中的相关代码如下:

 <a-dropdown class="lang header-item">
  <div>
    <a-icon type="pic-left" /> {{ type == 1 ? '内贸' : '外贸' }}
  </div>
  <a-menu
    @click="(val) => setType(val.key)"
    :selected-keys="[type]"
    slot="overlay"
  >
    <a-menu-item v-for="type in dataTypeList" :key="type.value">{{
      type.label
    }}</a-menu-item>
  </a-menu>
</a-dropdown>

1.2 data中添加dataTypeList参数

data(){
	return{
		dataTypeList: [
	        { value: '1', label: '内贸' },
	        { value: '2', label: '外贸' },
	      ],
	}
}

1.3 从vuex中引入mapStatemapMutations

import { mapState, mapMutations } from 'vuex';

1.4 在computed中获取mapState中的type,从mapMutations中获取setType方法

computed: {
    ...mapState('setting', [
      'type',
    ]),
},
methods: {
	...mapMutations('setting', ['setType']),
}

2.store/modules/setting.js文件中添加type参数和setType方法

state:{
	type: '1',
},
mutations: {
	setType(state, type) {
      state.type = type;
    },
}

3.App.vue文件中添加以下的刷新代码

3.1 template中的代码如下:

<template>
  <a-config-provider :locale="locale" :get-popup-container="popContainer">
    <router-view v-if="isRouterAlive" />
  </a-config-provider>
</template>

3.2 data中的参数

data() {
  return {
    isRouterAlive: true,
  };
},

3.3 从vuex中引入mapStatemapMutations

import { mapState, mapMutations } from 'vuex';

3.4 在computed中获取mapState中的type,从mapMutations中获取setType方法

computed: {
    ...mapState('setting', [
      'type',
    ]),
},
methods: {
	...mapMutations('setting', ['setType']),
}

3.5 watch中监听type

watch: {
    type(newVal) {
      console.log('type改变了', newVal);
      this.reload();
    },
}

3.6 methods中添加刷新当前页面的方法

reload() {
  this.isRouterAlive = false;
  console.log('刷新当前页面了');
  this.$nextTick(() => {
    this.isRouterAlive = true;
  });
},

4.监听路由参数的变化,从而更改type的值

 watch: {
    $route() {
      console.log('route', this.$route.query);
      if(this.$route.query&&this.$route.query.dataType){
        this.setType(this.$route.query.dataType)//将路由中的参数设置到vuex中,调用接口的时候可以从vuex中获取
      }
      //this.setHtmlTitle(); 这个是设置标题啥的,此处无用
    },
 }

5.接口js文件中添加入参

import store from '../../store';//相对路径根据具体的来
console.log(store.state.setting.type);此时就可以拿到vuex中的参数了,然后调用接口的时候统一添加此参数即可。

完成!!!多多积累,多多收获!


http://www.kler.cn/a/4367.html

相关文章:

  • OpenGL中Shader LOD失效
  • ROS1学习记录
  • MCP Server开发的入门教程(python和pip)
  • 人工智能任务19-基于BERT、ELMO模型对诈骗信息文本进行识别与应用
  • 【Vue】分享一个快速入门的前端框架以及如何搭建
  • C#中通道(Channels)的应用之(生产者-消费者模式)
  • iOS私有pod库的gitignore文件
  • 关于清除浮动
  • Linux中find命令使用示例
  • 聊一聊前端的性能指标
  • CSS transition 小技巧!如何保留 hover 的状态
  • 图解redis的AOF持久化
  • thinkphp+vue水果购物商城网站
  • 二维前缀和求子矩阵
  • VSQT 联编无转到槽选项--VS2019中使用QT建立信号和槽函数连接
  • Pytorch线性模型实现——up主:刘二大人《PyTorch深度学习实践》
  • Spring —— Spring简单的读取和存储对象Ⅰ
  • php使用yield处理大数据文件
  • Python中 join() 函数的使用方法
  • vue+springboot贫困山区儿童衣物捐赠网站系统
  • 基于Spring、Spring MVC、MyBatis的共享单车管理系统
  • Studio One没有声音怎么办 Studio One工程没有声音
  • Go底层原理:一起来唠唠GMP调度(一)
  • 【华为OD机试 2023最新 】 区块链文件转储系统(C++ 100%)
  • IO的类型(BIO、NIO、AIO)
  • GameFramework框架详解之 Config全局配置