Vue3商店后台管理系统设计文稿篇(七)
创始人
2024-05-19 17:14:31
0

记录使用vscode构建Vue3商店后台管理系统,这是第七篇,主要记录系统登录页面的创建过程,包含完整vue登录页面代码;Vuex的相关知识以及具体的使用,对state中值得获取,修改,异步修改,分模块用法进行详细记录,包含完整代码示例

文章目录

  • 一、登录页面的创建
  • 二、Vuex 是什么?
    • 查看默认state中定义的count值
    • 修改默认的count值
    • 异步操作修改count值
    • 获取count值
  • 三、 store 分模块用法


正文内容:

一、登录页面的创建

  1. 创建LoginView.vue文件,在路由列表添加登录页面的相关路由信息,如下所示:
 {path: "/login",name: "loginView",component: () => import("../views/login/LoginView.vue"),}
  1. 编辑LoginView.vue文件,具体代码如下所示:


  1. 在浏览器输入地址http://localhost:8080/login,查看登录页面效果如下:
    在这里插入图片描述

二、Vuex 是什么?

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

查看默认state中定义的count值

  1. 在state里面创建count
import {createStore} from "vuex";export default createStore({// 全局的状态初始值state: {count: 1,},// 计算state,获取对应值getters: {},// 更新状态的方法,更新state的唯一方法,commit mutationsmutations: {},// 可以异步操作,可以返回promise,更改数据还是传递到mutations进行更改actions: {},// 数据比较多的时候,分模块modules: {},
});
  1. 引入useStore,获取store对象,在登录按钮下边添加p标签,用于显示默认的count值
import { useStore } from "vuex"export default {name: "login",setup() {const store = useStore()const storeNum = store.state.count;const data = reactive({num: storeNum,})return {...toRefs(data),}}
}
  1. 运行效果如下图所示:
    在这里插入图片描述

修改默认的count值

  1. 在mutations里面创建修改count值的方法setCount;setCount方法共有两个参数,第一个参数是state,第二个参数是调用这个方法的时候传递的具体数据值
import {createStore} from "vuex";export default createStore({// 全局的状态初始值state: {count: 1,},// 计算state,获取对应值getters: {},// 更新状态的方法,更新state的唯一方法,commit mutationsmutations: {setCount(state, num) {state.count = num;},},// 可以异步操作,可以返回promise,更改数据还是传递到mutations进行更改actions: {},// 数据比较多的时候,分模块modules: {},
});
  1. 设置登录按钮的点击事件为更改count数值
import { reactive, toRefs } from "vue"
import { useStore } from "vuex"export default {name: "login",setup() {const store = useStore()const storeNum = store.state.count;const data = reactive({num: storeNum,})const submitForm = function (ruleFormRef) {console.log("login");//通过commit方法更改count值,第一个参数是mutations里面具体的方法名称,第二个参数是count的修改值store.commit("setCount", 100);console.log(store.state.count);}return {...toRefs(data),submitForm}}
}
  1. 运行效果如下图所示:
    在这里插入图片描述
    此时count的值并没有双向绑定

异步操作修改count值

  1. 在actions 里面定义setCountPromise方法,具体代码,如下所示:
import {createStore} from "vuex";export default createStore({// 全局的状态初始值state: {count: 1,},// 计算state,获取对应值getters: {},// 更新状态的方法,更新state的唯一方法,commit mutationsmutations: {setCount(state, num) {state.count = num;},},// 可以异步操作,可以返回promise,更改数据还是传递到mutations进行更改actions: {setCountPromise(context, num) {return new Promise((resolve, reject) => {if (num > 100) {reject("数值不能大于100");} else {context.commit("setCount", num);resolve();}});},},// 数据比较多的时候,分模块modules: {},
});
  1. 修改登录按钮的点击事件,具体代码如下所示
const submitForm = function (ruleFormRef) {//通过dispatch方法更改count值,第一个参数是actions里面具体的方法名称,第二个参数是count的修改值store.dispatch("setCountPromise", 101).then(resp => { console.log(store.state.count); }).catch(err => { console.log(err) });
}
  1. 当count的修改值为101时,运行效果如下所示:
    在这里插入图片描述
  2. 当count的修改值为100时,运行效果如下所示:
    在这里插入图片描述

获取count值

  1. 在getters里面添加getCount方法,具体代码如下所示:
import {createStore} from "vuex";export default createStore({// 全局的状态初始值state: {count: 1,},// 计算state,获取对应值getters: {getCount(state) {return state.count <= 1;},},// 更新状态的方法,更新state的唯一方法,commit mutationsmutations: {setCount(state, num) {state.count = num;},},// 可以异步操作,可以返回promise,更改数据还是传递到mutations进行更改actions: {setCountPromise(context, num) {return new Promise((resolve, reject) => {if (num > 100) {reject("数值不能大于100");} else {context.commit("setCount", num);resolve();}});},},// 数据比较多的时候,分模块modules: {},
});
  1. 修改登录按钮的点击事件
 const submitForm = function (ruleFormRef) {store.commit("setCount", 100);console.log(store.getters.getCount);
}
  1. 运行效果如下图所示:
    在这里插入图片描述
    在之前我们通过store.state.count也可以获取count值,但是为什么还需要store.getters.getCount这种方式获取count值;首先笔者发现这是一种解耦的操作,通俗的将就是模块之间的耦合度降低,方便代码后期维护管理;通过store.getters.getCount这种方式,对count的操作独立出来,代码后期需要更改时是十分方便的

三、 store 分模块用法

  1. 新建文件夹state,用于存储分模块的state数据,新建Number.state.js文件用于存储一个模块的state数据,文件树如下图所示:
    在这里插入图片描述
  2. 在Number.state.js写入state数据以及相关操作方法,具体代码如下所示:
export default {//开启namespace:true,该模块就成为命名空间模块namespaced: true,// 全局的状态初始值state: {count: 1,},// 计算state,获取对应值getters: {getCount(state) {return state.count <= 1;},},// 更新状态的方法,更新state的唯一方法,commit mutationsmutations: {setCount(state, num) {state.count = num;},},// 可以异步操作,可以返回promise,更改数据还是传递到mutations进行更改actions: {setCountPromise(context, num) {return new Promise((resolve, reject) => {if (num > 100) {reject("数值不能大于100");} else {context.commit("setCount", num);resolve();}});},},
};
  1. 在index.js导入Number.state.js,并在modules添加number,具体代码如下所示:
import {createStore} from "vuex";
import number from "./state/Number.state.js";
export default createStore({// 数据比较多的时候,分模块modules: {number},
});
  1. 使用state数据值count,注意用法已经改变,具体代码如下所示:

  1. 运行效果如下图所示:
    在这里插入图片描述

相关内容

热门资讯

与友情的诗句 与友情的诗句  友情,像盒子里的巧克力豆五彩缤斓;下面小编整理的与友情的诗句,欢迎来参考!  友情有...
秋风凉爽的诗句 秋风凉爽的诗句  秋夜,天高露浓,弯月牙在西南天边静静地挂着。清冷的月光洒下大地,是那么幽黯,银河的...
七夕的诗句 关于七夕的诗句15篇  在日常生活或是工作学习中,大家对诗句都再熟悉不过了吧,诗句通常按照诗文的格式...
形容春风暖的诗句 形容春风暖的诗句  在平时的学习、工作或生活中,大家都收藏过令自己印象深刻的诗句吧,诗句能使人们自然...
一树梅花的诗句有哪些 一树梅花的诗句有哪些  梅花品格高尚,铁骨铮铮,大家见到梅花,便会受到坚强、刚正和高洁气质的`熏陶和...
赞美教师的诗句 赞美教师的诗句  在日常的学习、工作、生活中,大家都收藏过令自己印象深刻的诗句吧,诗句节奏上鲜明有序...
巧笑东邻女伴,采桑径里逢迎 “巧笑东邻女伴,采桑径里逢迎。”出处 出自 宋代 晏殊 的《破阵子·春景》“巧笑东邻女伴,采桑径里逢...
古典唯美诗句 古典唯美诗句大全  无论是身处学校还是步入社会,大家总免不了要接触或使用诗句吧,诗句具有音韵和谐,节...
忽闻歌古调,归思欲沾巾 “忽闻歌古调,归思欲沾巾。”出处 出自 唐代 杜审言 的《和晋陵陆丞早春游望》“忽闻歌古调,归思欲沾...
关于父亲节的古诗诗词 关于父亲节的古诗诗词  父亲节是什么时候  父亲节,顾名思义是感恩父亲的节日。约始于二十世纪初,起源...
黄庭坚书法赏析 关于黄庭坚书法赏析  导语:黄庭坚以其鲜明的诗学主张和体现宋诗美学风范的`卓越诗歌成就而为诗坛所瞩目...
描写冷月的古诗句 描写冷月的古诗句  在日常生活或是工作学习中,大家一定都接触过一些使用较为普遍的诗句吧,诗句具有音韵...
表达思念的诗句亲人 表达思念的诗句亲人  江水三千里,家书十五行。行行无别语,只道早还乡。下面是描写表达思念的诗句亲人,...
描写爱情美好的诗句 描写爱情美好的诗句  曾经沧海难为水,除却巫山不是云------唐.元稹<<离思五首>>  从此无心...
宋玉神女赋原文及译文 宋玉神女赋原文及译文  在平平淡淡的学习中,大家对文言文一定不陌生吧?现在我们一般将古文称为文言文。...
2020纪念抗战胜利75周年... 七十五年,可以让一棵小树苗,长成青葱的参天大树,75年也可以让一个朝气勃发的少年变成一个已年过花甲的...
描写咏柳的诗句 描写咏柳的诗句  昔我往矣,杨柳依依。历代都有咏柳的诗句名篇。以下是专门为你收集整理的`描写咏柳的诗...
描写雪的诗句 描写雪的诗句(精选50句)  在平日的学习、工作和生活里,说到诗句,大家肯定都不陌生吧,诗句一般饱含...
大班诗歌《秋天的颜色》 大班诗歌《秋天的颜色》  在平日的学习、工作和生活里,大家都对那些朗朗上口的诗歌很是熟悉吧,诗歌节奏...
倚窗思秋,心缠绵散文 倚窗思秋,心缠绵散文(通用22篇)  在生活、工作和学习中,大家都接触过散文吧?狭义上的散文是指与诗...