Online Judge——【前端项目初始化】全局状态管理

状态管理:所有页面全局共享的变量,而不是局限在某一个页面中。

适合作为全局状态的数据:比如已登录用户信息。

目录

一、创建user.ts文件

我们要实现状态管理的话,要先创建一个目录store(之前项目初始化时已经帮我们创建了),vuex就像一个中央处理库,用于在vue.js应用程序中管理共享状态(数据),如下:

  • 之后在store文件夹中建立user.js,用于专门存放用户的状态信息,简单理解就是用于保存用户的信息。
    state:存储的状态信息,比如用户信息。
    getters:便捷获取对象的一个方法
    mutation(尽量同步):定义了变量进行增删改(更新)的方法
    actions:执行异步操作,并且触发mutation的更改(可以理解为actions调用mutation)。

二、定义user模块

user.ts文件如下:

c 复制代码
// initial state
import { StoreOptions } from "vuex";

export default {
  namespaced: true,
  state: () => ({
    loginUser: {
      userName: "未登录",
    },
  }),
  actions: {
    getLoginUser({ commit, state }, payload) {
      commit("updateUser", { userName: "ly" });
    },
  },
  mutations: {
    updateUser(state, payload) {
      state.loginUser = payload;
    },
  },
} as StoreOptions<any>;

index.ts文件如下

c 复制代码
import { createStore } from "vuex";
import user from "./user";

export default createStore({
  mutations: {},
  actions: {},
  modules: {
    user,
  },
});

三、获取静态变量

cpp 复制代码
const store = useStore();
store.state.user?.loginUser

效果演示:

四、修改状态变量

代码如下:

cpp 复制代码
store.dispatch("user/getLoginUser", {
  userName: "ly",
});

代码解释:上述代码通过Vuex store的分发(dispatch)方法调用一个名为user/getLoginUser的action,并且传递了一个包含userNamely的对象作为参数。

  • store.dispatch是vuex store提供的一个方法用于分发一个action。action在vuex中执行异步操作(比如说API请求),然后将数据提交给mutations进行状态更新
  • uer/getLoginUser是action的名称;"user"是vuex模块的命名空间(namespace),getLoginUser是该模块下的一个action名称,使用命名空间可以避免action名称冲突。
  • { userName: "ly" }是传递给action的参数对象。
相关推荐
AI浩19 小时前
【Labelme数据操作】LabelMe标注批量复制工具 - 完整教程
运维·服务器·前端
涔溪19 小时前
CSS 网格布局(Grid Layout)核心概念、基础语法、常用属性、实战示例和进阶技巧全面讲解
前端·css
2401_8784545319 小时前
浏览器工作原理
前端·javascript
西陵20 小时前
为什么说 AI 赋能前端开发,已经不是选择题,而是必然趋势?
前端·架构·ai编程
by__csdn21 小时前
Vue3 setup()函数终极攻略:从入门到精通
开发语言·前端·javascript·vue.js·性能优化·typescript·ecmascript
天天扭码21 小时前
前端如何实现RAG?一文带你速通,使用RAG实现长期记忆
前端·node.js·ai编程
Luna-player1 天前
在前端中,<a> 标签的 href=“javascript:;“ 这个是什么意思
开发语言·前端·javascript
lionliu05191 天前
js的扩展运算符的理解
前端·javascript·vue.js
小草cys1 天前
项目7-七彩天气app任务7.4.2“关于”弹窗
开发语言·前端·javascript
奇舞精选1 天前
GELab-Zero 技术解析:当豆包联手中兴,开源界如何守住端侧 AI 的“最后防线”?
前端·aigc