vue3+antd——实现App.vue页面实时获取权限+用户信息的功能——基础积累

这篇具有很好参考价值的文章主要介绍了vue3+antd——实现App.vue页面实时获取权限+用户信息的功能——基础积累。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前写过一篇文章关于vue3+antd的框架模板,链接如下:http://t.csdn.cn/9dZMS
下面针对App.vue页面实时获取权限+用户信息的功能做一下记录

1.App.vue代码

<template>
  <ConfigProvider :locale="locale">
    <ThemeProvider is-root v-bind="themeConfig" :apply-style="false" :color="{ primary: { DEFAULT: '#f90' } }">
      <stepin-view
        system-name=""
        logo-src="@/assets/logo.png"
        :class="`${contentClass}`"
        :user="user"
        :navMode="navigation"
        :useTabs="useTabs"
        :themeList="themeList"
        v-model:show-setting="showSetting"
        v-model:theme="theme"
        @themeSelect="configTheme"
      >
        <template #headerActions>
          <HeaderActions @showSetting="showSetting = true" />
        </template>
      </stepin-view>
    </ThemeProvider>
  </ConfigProvider>
</template>

2.js代码

<script lang="ts" setup>
  import { ConfigProvider } from 'ant-design-vue';
  import { reactive, ref, computed } from 'vue';
  import { useRouter } from 'vue-router';
  import { useAccountStore, useSettingStore, storeToRefs } from '@/store';
  import avatar from '@/assets/avatar.png';
  import { HeaderActions } from '@/components/layout';
  import { configTheme, themeList } from '@/theme';
  import { ThemeProvider } from 'stepin';
  const { logout, profile } = useAccountStore();
  import dayjs from 'dayjs';
  import 'dayjs/locale/zh-cn';
  import 'dayjs/locale/ar';
  import 'dayjs/locale/en';
  dayjs.locale('zh-cn');
  import zhCN from 'ant-design-vue/es/locale/zh_CN.js';
  const showSetting = ref(false);
  const router = useRouter();
  const locale = zhCN;
  // 获取个人信息
  profile((response, account) => {});
  let user = computed(() => {
    const { account } = storeToRefs(useAccountStore());
    return {
      name: account?.value?.name,
      avatar: account?.value?.headPhoto || avatar,
      menuList: [
        { title: '个人中心', key: 'personal', icon: 'UserOutlined', onClick: () => router.push('/userInfo') },
        { type: 'divider' },
        {
          title: '退出登录',
          key: 'logout',
          icon: 'LogoutOutlined',
          onClick: () =>
            logout().then(() => {
              router.replace('/login');
            }),
        },
      ],
    };
  });
  const { navigation, useTabs, theme, contentClass } = storeToRefs(useSettingStore());
  const themeConfig = computed(() => themeList.find((item) => item.key === theme.value).config);
</script>

重要的代码如下:

通过computed计算属性进行用户信息的实时监听,用户信息更改时也会重新触发user参数的变化,最终导致user内容保持为最新的。

  // 获取个人信息,只要是刷新整个系统,也就是刷新浏览器的时候,就会触发这个`profile`的方法来获取权限。
  import { useAccountStore, useSettingStore, storeToRefs } from '@/store';
  const { logout, profile } = useAccountStore();
  profile((response, account) => {});
  //为了实时获取用户信息,则需要通过这个`computed`计算属性来处理。
  let user = computed(() => {
    const { account } = storeToRefs(useAccountStore());
    return {
      name: account?.value?.name,
      avatar: account?.value?.headPhoto || avatar,
      menuList: [
        { title: '个人中心', key: 'personal', icon: 'UserOutlined', onClick: () => router.push('/userInfo') },
        { type: 'divider' },
        {
          title: '退出登录',
          key: 'logout',
          icon: 'LogoutOutlined',
          onClick: () =>
            logout().then(() => {
              router.replace('/login');
            }),
        },
      ],
    };
  });

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

下面补充一下vue3computed的内容:

vue3 中 的 computed 的使用,由于 vue3 兼容 vue2 的选项式API,所以可以直接使用 vue2的写法,这篇文章主要介绍 vue3 中 computed 的新用法,对比 vue2 中的写法,让您快速掌握 vue3 中 computed 的新用法。

组合式 API 中使用 computed 时,需要先引入:import { computed } from “vue”。引入之后 computed 可以传入的参数有两种:回调函数和 options 。具体看看它是如何使用的?

一、函数式写法

在vue2中,computed 写法:

computed:{ sum(){ return this.num1+ this.num2 } }
在vue3 如果使用选项式API也可以这样写,主要看下组合式API的使用。

示例1:求和

import { ref, computed } from “vue” export default{ setup(){ const num1 = ref(1) const num2 = ref(1) let sum = computed(()=>{ return num1.value + num2.value }) } }
调用 computed 时, 传入了一个箭头函数,返回值作为 sum 。相比之前,使用更加简单了。如果需要计算多个属性值,直接调用就可以。如:

let sum = computed(()=>{ return num1.value + num2.value }) let mul = computed(()=>{ return num1.value * num2.value })
该示例过于简单,看不明白的可在文章后面阅读完整实例1。

二、options 写法

计算属性默认只有 getter ,在需要的时候也可以提供 setter 。在vue2中用法如下:

computed:{ mul:{ get(){ // num1值改变时触发 return this.num1 * 10 }, set(value){ // mul值被改变时触发 this.num1 = value /10 } } }
mul 属性是 给num1 放大10,如果修改 mul 的值,则 num1 也随之改变。

在 vue3 中 :

let mul = computed({ get:()=>{ return num1.value *10 }, set:(value)=>{ return num1.value = value/10 } })
这两种写法不太一样,仔细观察区别不大,get 和 set 调用也是一样的。

在此示例中代码简单,如果没太理解,可查看文章后面的完整实例2。

完整实例1:
{{num1}} + {{num2}} = {{sum}}
<button @click=“num1++”>num1自加 <button @click=“num2++”>num2自加

完整实例2:
{{num1}} + {{num2}} = {{sum}}
<button @click=“num1++”>num1自加 <button @click=“num2++”>num2自加
{{num1}} * 10 = {{mul}} <button @click=“mul=100”>改值

三、computed 传参
计算属性需要传入一个参数怎么写呢?
<div v-for=“(item,index) in arr” :key=“index” @click=“sltEle(index)”> {{item}}

直接这样写,运行的时候,出现错误:Uncaught TypeError: $setup.sltEle is not a function。

原因:

computed 计算属性并没有给定返回值,我们调用的是一个函数,而 computed 内部返回的并不是一个函数,所以就会报错:sltEle is not a function。

解决办法:

需要在计算属性 内部返回一个函数。修改代码如下:
const sltEle = computed( ()=>{ return function(index){ console.log(‘index’,index); } })文章来源地址https://www.toymoban.com/news/detail-634425.html

到了这里,关于vue3+antd——实现App.vue页面实时获取权限+用户信息的功能——基础积累的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3获取页面路径

    2024年02月08日
    浏览(46)
  • 获取用户角色权限信息实现

    2024年02月14日
    浏览(36)
  • 【自用】VUE 获取登录用户名 显示在其他页面上

    步骤1: 安装 js-cookie 依赖 步骤2: 在登录页面中引入 js-cookie 依赖 步骤1: 步骤1: 在其他页面中引入 js-cookie 依赖 步骤2: 设定一个 computed 计算属性,并在其中写入获取登录界面 cookies 的方法: 步骤3: 在需要使用的地方使用 插值表达式 {{xxx}} 来使用它! (请注意,我们需

    2024年02月01日
    浏览(50)
  • Vue3解决Vuex异步获取数据,页面先渲染问题

    在vuex中异步请求数据,页面获取vuex中的数据渲染页面时,数据还未返回时,页面还未渲染。 解决方法: 在数据还未返回时,先不渲染页面结构,使用骨架屏等待数据请求 等待数据返回之后,设置isShow为true,同时重新渲染页面 完美解决Vue3数据异步获取为完成,页面提前渲

    2024年02月11日
    浏览(55)
  • Vue3——getCurrentInstance、页面中route和router的获取方式

    getCurrentInstance() 在vue2中,可以通过this来获取组件实例,但是在vue3的setup函数中,无法通过this获取到组件实例,在setup函数中this的值是undefined,但是vue3提供了getCurrentInstance()来获取组件的实例对象; 输出结果:  可以看出,getCurrentInstance是一个方法,getCurrentInstance()是一个对

    2024年02月15日
    浏览(37)
  • UniApp开发安卓以及H5实现页面级权限管理,避免用户浏览器直接输入url访问页面

    前言:uni-app如何像vue-router中的beforeEach一样实现跳转拦截功能呢? 为此uniapp官方提供了专门的API方法 uni.addInterceptor 举个栗子 我们发现底部有四个菜单分别是:首页、分类、购物车、我的;按常理来说首页和分类是不需要登陆就能查看的。另外两个则需要先登陆才能查看没登

    2024年01月16日
    浏览(66)
  • vue实现用户动态权限登录

    一、使用vue+elementUI搭登录框架,主要就是1、2、3、4 配置: ①vue.config.js ②main.js 二、代码部分 layout目录: layout/index.vue ①appMain/index.vue ②headerTemp/index.vue ③sideBar/index.vue ④sideBar/sidebarItem.vue 路由配置 ①router/index.js ②router/router-config.js 登录(views/login/index.vue) 动态返回路由

    2024年02月06日
    浏览(30)
  • csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板

    大家好,我是yma16,本文分享利用inscode搭建vue3(ts)+antd前端模板。 2023 新星计划 vue(ts)+antd赛道报名入口:https://bbs.csdn.net/topics/616574177 搭建vue3+ts+antd的指引:认识vite_vue3 初始化项目到打包 InsCode 是一个一站式的软件开发服务平台,从开发-部署-运维-运营,都可以在 InsCode 轻松

    2024年02月16日
    浏览(50)
  • uniapp获取用户信息(登录及个人中心页面的实现)

    因为在微信小程序中wx.getuserInfo已经失效,所以我们在uniapp中也应该使用wx.getUserProfile来获取用户信息 页面的逻辑 一上来加载个人中心页,当用户点击未登录三个字时跳转登录页 登录页点击微信登录应该跳出授权弹窗获取用户的授权信息(使用wx.getUserProfile) 当用户点击同意

    2024年02月11日
    浏览(53)
  • vue如何实现实时监听页面宽度高度变化

    运用的主要技术:watch监听 话不多说直接上代码,自行研究

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包