Vuex(一)

简介: Vuex是一个专为vue.js应用程序开发的状态管理模式。他采用集中式存储来管理应用程序中所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex也集成到了vue的官网调试工具vue-devtools中,提供了诸如零配置的time-travel调试、状态快照导入导出等高级调试功能

Vuex是一个专为vue.js应用程序开发的状态管理模式。他采用集中式存储来管理应用程序中所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex也集成到了vue的官网调试工具vue-devtools中,提供了诸如零配置的time-travel调试、状态快照导入导出等高级调试功能

Vuex安装

使用npm安装方式,安装命令如下:

npm install vuex

注意如果报错npm ERR! code ERESOLVEnpm ERR! ERESOLVE unable to resolve dependency tree的话要使用下面这个命令,这个报错是因为npm版本太高:

npm install vuex --legacy-peer-deps

在main.js文件中导入Vuex,并安装Vuex插件,代码如下:

import Vuex from 'vuex'
Vue.use(Vuex)

import Vuex from 'vuex'是导入vuex

Vue.use(Vuex)是安装Vuex插件

基本用法

Vuex使用单一状态树,用一个对象包含了所有应用层级的状态,作为唯一数据源(single source of truth)而存在,每一个Vuex应用的核心就是store,store可理解为保存应用程序状态的容器

store与普通的全局对象的区别有以下两点:

  1. Vuex的·状态存储是响应式的。当Vue组件从store中检索状态的时候,如果store中的状态发送变化,那么组件也会相应地得到高效更新
  2. 不能直接改变store中的状态,改变store中的状态的唯一途径就是显式地提交mutation,这可以确保每个状态更改都留下可跟踪的记录,从而能够启用一些工具来帮助我们更好地理解应用

创建一个store代码如下:

const store=new Vuex.Store({
    state:{
        count:0
    },
    mutations:{
        increment (state){
            state.count++
        }
    }
})

state:{}状态数据放到state选项中

mutations:{}选项中第一修改状态的方法 这些方法接收state作为第一个参数

在组件中访问store中的数据可以直接使用store.state.count

在组件中展示store中的状态,使用计算属性来返回store的状态。代码如下:

computed:{
    count(){
      return this.$store.state.count
    }
  }

之后在组件的模板中就可以直接使用count。当store中的count发送改变时,组件内的计算属性count也会同步发生改变

更改store状态要遵照Vuex的要求:通过提交mutation来更改store中的状态。在严格模式下如果store中的状态改变不是由mutation函数引起的,则会抛出错误,而且如果直接修改store中的状态,Vue的调试工具也无法跟踪状态的改变,在开发阶段可以启用严格模式,以避免直接的状态修改,在创建store的时候,传入strict:true。代码如下:

const store = new Vuex.Store({
    strict:true,
    state: {
        count: 0
    },
    mutations: {
        increment(state) {
            state.count++
        }
    }
})

Vuex中的mutation非常类似于事件:每个mutation都有一个字符串的事件类型和一个处理器函数,这个处理器函数就是实际进行状态更改的地方,他接收state作为第一参数,

我们不能直接调用一个mutation处理器函数,mutation选项更像是事件注册,当触发一个类型为increment的mutation时,调用此函数要调用一个mutation处理器函数,需要用他的类型去调用store。commit方法,代码如下:

store.commit("increment")


作者:xiao_kai

链接:https://juejin.cn/post/7112403250837471263

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目录
相关文章
|
4天前
|
数据采集 人工智能 安全
|
13天前
|
云安全 监控 安全
|
5天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1102 152
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1778 9
|
10天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
708 152
|
12天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
664 14
|
7天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
467 5