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

姑苏网站建设手机电商网站开发

姑苏网站建设,手机电商网站开发,网络规划设计师 第二版 教材,网页链接下载什么是全局状态管理? 所有页面全局共享的变量,而不是局限在某一个页面中。适合作为全局状态的数据: 已登录用户信息 (每个页面几乎都要用) Pinia 是一个主流的状态管理库,相比于 Vuex 来说使用更简单,可参考 入门文档 开始 | Pinia 进行引…

什么是全局状态管理?

        所有页面全局共享的变量,而不是局限在某一个页面中。适合作为全局状态的数据: 已登录用户信息 (每个页面几乎都要用) Pinia 是一个主流的状态管理库,相比于 Vuex 来说使用更简单,可参考 入门文档  开始 | Pinia  进行引入 ;

1、引入 Pinia 

此处由于 create-vue 脚手架已经帮我们整合了 Pinia,无需手动引入,直接使用即可

或者没有整合的话,使用命令安装 :

yarn add pinia
# 或者使用 npm
npm install pinia

 此处是使用 vue - create 脚手架自动生成的,这里举了一个管理一个计数器的状态的例子。

import { ref, computed } from 'vue'
import { defineStore } from 'pinia'//一个状态就存储一类要共享的数狱(存一类常量)
// 使用 defineStore 定义了一个名为 'counter' 的 store。创建了一个简单的计数器 store,允许获取当前计数、获取计数的两倍值,并提供增加计数的功能
// 这个 store 包含了三个主要部分:状态(state)、计算属性(getters)和动作(actions)。
export const useCounterStore= defineStore('counter', () => {//定义状志的初始值 count = ref(0):定义了一个名为 count 的响应式变量,初始值为 0。这个变量用于存储计数器的当前值。//定义受量的计算逻辑 getterconst count = ref(0)// 定义了一个计算属性 doubleCount,它始终返回 count 的两倍值。当 count 发生变化时,doubleCount 会自动更新。const doubleCount = computed(() => count.value * 2)// 定义怎么更改状态的方法 定义了一个方法 increment,用于将 count 的值加 1。function increment() {count.value++}// 返回 ,导出 Storereturn { count, doubleCount, increment }
})

2、定义状态

在 src/stores 目录下定义 user 模块,定义了用户的存储、远程获取、修改逻辑 :

import { defineStore } from "pinia";
import { ref } from "vue";export const useLoginUserStore = defineStore("loginUser", () => {const loginUser = ref<any>({userName: "未登录",});async function fetchLoginUser() {// todo 由于后端还没提供接口,暂时注释// const res = await getCurrentUser();// if (res.data.code === 0 && res.data.data) {//   loginUser.value = res.data.data;// }}function setLoginUser(newLoginUser: any) {loginUser.value = newLoginUser;}return { loginUser, setLoginUser, fetchLoginUser };
});

3、使用状态

可以直接使用 store 中导出的状态变量和函数。
在首次进入到页面时,一般会尝试获取登录用户信息。修改 App.vue,编写远程获取数据代码:

const loginUserStore = useLoginUserStore()
loginUserStore.fetchLoginUser()

在任何页面中都可以使用数据,比如 GlobalHeader 全局顶部栏组件中直接展示:

{{ JSON.stringify(loginUserStore.loginUser) }}

修改全局顶部栏组件,在右侧展示登录状态

<div class="user-login-status"><div v-if="loginUserStore.loginUser.id">{{ loginUserStore.loginUser.userName ?? '无名' }}</div><div v-else><a-button type="primary" href="/user/login">登录</a-button></div>
</div>

4、测试全局状态管理

在 userstore 中编写测试代码,测试用户状态的更新:

async function fetchLoginUser() {// 测试用户登录,3 秒后登录setTimeout(() => {loginUser.value = { userName: '测试用户', id: 1 }}, 3000)
}
http://www.dtcms.com/wzjs/571490.html

相关文章:

  • wordpress sae svn放心网站推广优化咨询
  • 北京网站优化服务商济南建网站市场
  • 有什么可以做建筑模型的网站岳阳博物馆网站
  • 运河网站制作提供网站建设出售
  • 统计局门户网站建设目标app软件开发公司排行
  • 南宁建站服务建设银行忘记密码网站首页
  • 平面设计高端网站哪个网站做的简历比较好
  • 做网站中网页的大小建视频网站需要多大空间
  • 制作网站软件不懂代码可以制作吗南通小程序制作
  • 网架制作厂云南网络推广seo代理公司
  • 网页设计制作网站论文扬州高端网站建设
  • 提供手机网站建设推荐国内精自品线一区91制片
  • 沈阳网站建设那家好哪个网站做飞机订单
  • 重庆网站优化指导php手机网站开发工具
  • 网站建设设计策划移动电商网站设计
  • 营销型网站建设多少钱域名 做网站和邮箱
  • 网站域名如何续费删负面的网站
  • 流行网站类型北京医院网站建设
  • 兰州微信信息平台网站建设自己设计好的网站怎么设置访问
  • m开头的手机网站怎么做wordpress菜单如何做
  • 网站logo怎么做动态上外国网站用什么dns
  • 搜索引擎对网站推广的作用缪斯设计上海
  • 怎样接做网站的活创建网站要钱吗
  • 做旅游网站需要的背景用wordpress建站难吗
  • 国内大的网站建设公司排名网站什么做才会更吸引客户
  • 上海通信管理局网站浙江省建设质量工程协会网站
  • 管理信息系统网站建设网站规划与设计网站页面
  • 企业申请网站建设请示网站建设一般用什么编程
  • 西安模板网站建设营销型网站建设和规划
  • 公司网站更换域名手机网站北京