我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue中的vuex是什么意思

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue中的vuex是什么意思

这篇文章将为大家详细讲解有关vue中的vuex是什么意思,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

概念

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

安装

  1. HTML 中使用 script 标签引入

<script class="lazy" data-src="vue.js"></script><script class="lazy" data-src="vuex.js"></script>
  1. Vue项目中使用 npm 下载安装(需要安装 Node 环境)

// 下载npm install vuex --save// 安装import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)

Vuex 图示

vue中的vuex是什么意思

Vuex 和单纯的全局对象有以下两点不同:

  • Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。

  • 不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。

Store

    每一个 Vuex 应用的核心就是 store(仓库)。“store” 基本上就是一个容器,它包含着你的应用中大部分的状态 (state)。

State

    驱动应用的数据源,用于保存所有组件的公共数据.。

Getter

    可以将 getter 理解为 store 的计算属性, getters 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。

Mutation

    mutations 对象中保存着更改数据的回调函数,该函数名官方规定叫 type, 第一个参数是 state, 第二参数是payload, 也就是自定义的参数。mutation 必须是同步函数。mutations 对象里的方法需要使用 store.commit 调用

Action

    Action 提交的是 mutation 而不是直接变更状态。action 可以包含任意异步操作。actions 对象里的方法需要使用 store.dispatch 调用。

    Action 函数接受一个与 store 实例具有相同方法和属性的 context 对象,因此你可以调用 context.commit 提交一个 mutation,或者通过 context.state 和 context.getters 来获取 state 和 getters。

Module

    由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。为了解决以上问题,Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割。

HTML中 vuex 的使用

<body><p id="app">    <input type="button" value="+" @click="add">    {{this.$store.state.count}}    <input type="button" value="-" @click="reduce">    {{this.$store.getters.synchro}}    <input type="button" value="改变为10" @click="changeNum"></p><script class="lazy" data-src="vue.js"></script><script class="lazy" data-src="vuex.js"></script><script>    var store = new Vuex.Store({        state: {            count: 0        },        getters: {            synchro(state) {                return state.count            }        },        mutations: {               increment(state) {                state.count++            },            inreduce(state) {                state.count--            },            inchange(state, num) {                state.count = num            }        },        actions: {            change(context, num) {                context.commit('inchange', num)            }        }    })    new Vue({        el: '#app',        store,        methods: {            add() {                this.$store.commit('increment')            },            reduce() {                this.$store.commit('inreduce')            },            changeNum() {                this.$store.dispatch('change', 10)            }        }    })</script></body>

Vue 项目中 vuex 的使用(两种)

  1. 把 vuex 写在 main.js 文件里

import Vue from 'vue'import App from './App'import router from './router'import Vuex from 'vuex'// 全局状态管理Vue.use(Vuex)Vue.config.productionTip = falsevar store = new Vuex.Store({  state: {    num: 0  },  mutations: {    changeNum(state, num){      state.num += num    }  }})new Vue({  el: '#app',  store,  router,  components: { App },  template: '<App/>'})

    在组件中调用

<template><p><input type="button" value="改变count的值" @click="change">    {{this.$store.state.count}}<p></template><script>export default {name: '',data () {    return {}    },    methods: {change() {this.$store.commit('changeNum', 10)}}}</script>
  1. 把 vuex 分离出来

    在 class="lazy" data-src 目录下创建一个 vuex 目录,新建 modules 目录 和 index.js 文件 放到 vuex 目录下
vue中的vuex是什么意思

    在 main.js 文件里引入 vuex 目录

import Vue from 'vue'import App from './App'import router from './router'import store from './vuex'Vue.config.productionTip = falsenew Vue({  el: '#app',  store,  router,  components: { App },  template: '<App/>'})

    在 index.js 里写上如下代码

import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)let modules = {}const requireAllModules = require.context("./", true, /\.js$/)requireAllModules.keys().forEach(key => {  let module = requireAllModules(key).default  if (module && module.name && module.namespaced) {    modules[module.name] = module  }})export default new Vuex.Store({  modules: modules,  strict: process.env.NODE_ENV !== "production"})

    在 modules 目录下 新建 city.js 文件,里面代码如下

export default {  name: "city",  namespaced: true,  state: {    cityName: '',    cityCode: ''  },  getters: {    getState(state) {      return state    },    getCityCode(state) {      return state.cityCode    }  },  mutations: {    changeCity(state, cityName) {      state.cityName = cityName    }  }}

    在组件里设置值

<template><p><ul>          <li v-for="item in city" @click="handChangeCity(item.name)"></li>        </ul></p></template><script>import { mapMutations } from 'vuex'   // 引入vuexexport default {name: "city",data() {return {city: [{ id: 1, name: '北京' }{ id: 2, name: '上海' }{ id: 3, name: '广州' }{ id: 4, name: '深圳' }{ id: 5, name: '厦门' }]}},methods: {// 修改...mapMutations({changeCity: "city/changeCity"}),// 第一种写法handChangeCity(cityName) {this.changeCity(cityName)}// 第二种写法  不需要使用 ...mapMutationshandChangeCity(cityName) {this.$store.commit('city/changeCity', cityName);}}}</script>

    在另一个组件里使用

<template><p><p>{{getState.cityName}}</p><p>{{getCityCode}}</p></p></template><script>import { mapGetters} from 'vuex'   // 引入vuexexport default {data() {return {}},computed: {    // 第一种使用方法    ...mapGetters({    getState: "city/getState"    })    // 第二种使用方法    ...mapGetters('city', ['getState', 'getCityCode'])  }}</script>

关于“vue中的vuex是什么意思”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue中的vuex是什么意思

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue中的vuex是什么意思

这篇文章将为大家详细讲解有关vue中的vuex是什么意思,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概念    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的
2023-06-22

vue中的插槽是什么意思

这篇文章主要为大家展示了“vue中的插槽是什么意思”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中的插槽是什么意思”这篇文章吧。一、认识插槽Slot前面我们会通过props传递给组件一些数
2023-06-29

vue的$refs是什么意思

在vue中,$refs是一个对象,持有注册过ref attribute的所有DOM元素和组件实例。ref被用来给元素或子组件注册引用信息,引用信息将会注册在父组件的“$refs”对象上;如果在普通的DOM元素上使用,引用指向的就是DOM元素;如果用在子组件上,引用就指向组件实例。
2023-05-14

vue的跨域是什么意思

在vue中,跨域是指浏览器不能执行其他网站的脚本;它是浏览器同源策略造成的,是浏览器对JS实施的安全限制。跨域本质是浏览器基于同源策略的一种安全手段;而同源策略是一种约定,它是浏览器最核心也最基本的安全功能。vue跨域的解决方法:1、JSONP;2、CORS;3、Proxy。
2023-05-14

vue dom是什么意思啊

dom是一种文档对象模型,同时也是用于html编程的接口,通过dom来操作页面中的元素。DOM是HTML文档的内存中对象表示,它提供了使用JavaScript与网页交互的方式。DOM是节点的层次结构(或树),其中document节点作为根。
2023-05-14

Vue初始化是什么意思

初始化 Vue 是什么意思?Vue 是一款非常流行的 JavaScript 框架,广泛用于构建现代化的 Web 应用程序。在开始学习 Vue 之前,你需要先了解 Vue 的初始化过程,以便正确地使用 Vue 并创建可重复的代码。初始化 Vue 是指在页面中创建一个 Vue 实例,该实例可以管理应用程序的状态和呈现界面的变化。Vue 实例是 Vue 框架的核心部分,也是在使用 V
2023-05-14

java中的“=”是什么意思

一、对变量而言等于号具有赋值的作用,比如说a=3,就是把3赋值于a。这个是很简单的,大家都经常赋值,除了判断要双等于号外,但单等于号在初始化对象的时候进行赋值。二、对引用对象而言等于号具有传引用(隐式指针)的作用,这个也不难理解,比如说指针:a=b,对象a的指
java中的“=”是什么意思
2015-04-04

c++中的\是什么意思

c++中的“\”是转义字符,用于表示特殊字符或功能,包括:换行符(\n)制表符(\t)引号(\")反斜杠(\)回车(\r)垂直制表符(\v)转义序列(\0、\xhh、\ooo、\a、\b)C++中“\”的作用C++语言中,“\”字符被称为
c++中的\是什么意思
2024-05-06

mysql中的%是什么意思

mysql 中的 % 通配符用于在 like 操作符中进行模式匹配,表示零个或多个字符。它可用于查找以给定模式开头的所有字符串或包含给定模式的字符串,还可以可选地查找以给定模式结尾的字符串。除了 % 之外,mysql 还提供了其他通配符,包
mysql中的%是什么意思
2024-04-26

c++中的!是什么意思

c++ 中的 ! 运算符是逻辑非运算符,用于对布尔表达式进行取反,将其真值翻转为假值或假值为真值。C++ 中的 ! 运算符什么是 ! 运算符?! 是 C++中的逻辑非运算符,又称为“逻辑取反”运算符。作用:! 运算符对一个布尔表达式
c++中的!是什么意思
2024-04-26

c++中的_是什么意思

c++ 中的“_”符号用于:1. 处理与关键字冲突的函数参数;2. 标记未使用的变量;3. 命名空间限定;4. 宏预处理器;5. 匿名联合或枚举成员。C++ 中的“_”符号C++ 中的“_”符号,又称为下划线,具有以下几种用途:1. 函
c++中的_是什么意思
2024-04-28

sql中的@是什么意思

sql 中 @ 符号用于指定一个查询中可变的参数,对提高代码可读性、防止 sql 注入攻击、提高性能有帮助。语法:@parameter_name,其中 parameter_name 是参数的名称。SQL 中 @ 符号的含义在 SQL 中,
sql中的@是什么意思
2024-05-02

MySQL中的/*是什么意思

在MySQL中,/ /用于多行注释。它可以在SQL语句中的任何位置使用,用于注释掉一段代码或提供对代码的解释。多行注释可以跨越多个行,并且可以包含任何文本,而不会被MySQL解释为有效的SQL语句。这在调试代码或进行文档编写时非常有用。例如
2023-10-20

c#中的$是什么意思

c# 中 $ 符号具有以下三个主要含义:1. 字符串内插,用于将表达式嵌入字符串中;2. 匿名类型,用于创建临时类型,其属性与初始化器中的表达式相对应;3. 模式匹配,用于匹配不同的表达式模式并指定操作。C# 中的 $在 C# 中,$ 符
c#中的$是什么意思
2024-04-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录