【Vuex】vuex基本介绍与使用

Vuex是什么?

官方解释:

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

简单来说,当Vue应用程序比较庞大的时候,组件里面的状态会比较多,为了方便管理某些状态,我们需要把其中一些变量抽出来,放到Vuex里面去,通过Vuex去集中的管理。

为什么要用Vuex?

官方解释:

当我们构建一个中大型的单页面程序时,Vuex可以更好地帮助我们在组件外部统一管理状态


什么是状态?

状态就是变量,状态就是组件里面的data里面的值,例如

data() {
    return{
        msg: ‘hello world‘
    }
}

这个msg变量就是状态

Vuex的核心概念(State,Mutations,Getters,Action,Modules)

State

// States是唯一的数据源
// 单一状态树(意思是当我们创建了一个store实例,它里面就只有一个State,而不像我们的Vue组件,一个组件可以嵌套另一个组件,层层嵌套)

const Couter = {
    template: `
        <div> {{ count }} </div>
    `
    computed: {
        count () {
            return this.$store.state.count
        }
    }
}

  

Getters

// 通过Getters可以派生出一些新的状态,【扩展】
// 通过Getters可以重新创建一个值,这个值是对state里面的状态进行修改的
const store = new Vuex.Store({
    state: {
        name: ‘Jack‘
    },
    getters: {
        userName (state) {
            return state.name + ‘, Hello‘
        }
    }
})

// *****************************************************//

/ 使用的话,就可以在Vue组件中,通过computed来进行调用,如下
computed: {
    userName() {
        return this.$store.userName
    }
}

  

Mutations

必须掌握
这个方式的好处就是方便管理日志,在哪里提交,怎么提交的,都会加入到日志里面,方便vux调试

// 更改Vuex中的store中的状态的唯一方法是提交mutation
const store = new Vuex.Store({
    state: {
        count: 1,
        name: ‘jack‘
    },
    mutations: {
        increment (state) { // 不带参数地修改
            state.count++ // 变更状态
        }
        updateName (state, userName) { // 带参数地修改
            state.name = userName // 变更状态
        }
    }
})

//**************************************************************//

//在组件中,提交的用法如下
new Vue({
    el: ‘#app‘,
    store,
    data: {
        msg: ‘hello world‘
    }
    methods: {
        add () {
            this.$store.commit(‘increment‘)
            this.$store.commit(‘updateName‘, ‘Mike‘)
        }
    }
})

  

Actions

// 【扩展】
// Action可以包含任意异步操作
// 提交的是mutation,而不是直接变更状态
// 可以包含任意异步操作(解决了mutations不能异步操作的问题,就是对mutations的扩展)
const store = new Vuex.Store({
    state: {
        count: 0
    },
    mutations: {
        increment (state) {
            state.count++
        }
    },
    actions: {
        increment (context) { // 注意了,这里不是state,而是context,它能够调用mutations
            context.commit(‘increment‘)
        }
    }
})

//**************************************************************//

// 注意!!!actions在组件中的使用
methods: {
    add () {
        this.$store.dispatch(‘incrementAction‘)  //这里用的是dispatch
    }
}

Modules

// 【扩展】
// 也是扩展出来的东西,当我们的页面非常打的时候,管理的状态非常多的时候,就需要把状态拆分成一块一块的(即模块)

const moduleA = {
     state: {......},
     mutations: {......},
     actions: {......},
     getters: {......}
}

const moduleB = {
     state: {......},
     mutations: {......},
     actions: {......},
     getters: {......}
}

const moduleC = {
     state: {......},
     mutations: {......},
     actions: {......},
     getters: {......}
}

下图是官网的图,Vuex的运行框架大致如下所示:

----------END-----------

原文地址:https://www.cnblogs.com/pengshengguang/p/8552661.html

时间: 2024-08-09 04:00:11

【Vuex】vuex基本介绍与使用的相关文章

vue npm run unit Error: [vuex] vuex requires a Promise polyfill in this browser.

PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR Error: [vuex] vuex requires a Promise polyfill in this browser. at webpack:///~/vuex/dist/vuex.js:145:0 <- index.js:9871 解决方法: npm install --save-dev babel-polyfill karma.conf.js files: [ '../node_modules/babel-

vue项目在IE下报 [vuex] vuex requires a Promise polyfill in this browser问题

如下图所示,项目在IE11下打开报错: 因为使用了 ES6 中用来传递异步消息的的Promise,而IE浏览器都不支持. 解决方法: 第一步: 安装 babel-polyfill . babel-polyfill可以模拟ES6使用的环境,可以使用ES6的所有新方法 $ npm install --save babel-polyfill npm WARN ajv[email protected] requires a peer of [email protected]^6.0.0 but none

Vuex基本介绍

1.什么是Vuex Vuex是一个专为vue.js应用程序开发的状态管理模式. 状态管理:data里面的变量都是vue的状态 2.为什么要用Vuex 当我们构建一个中大型的单页面应用程序时,Vuex可以更好的帮助我们在组建外部统一管理状态. 3.Vuex的核心概念 state Getters Mutations Actions Modules 原文地址:https://www.cnblogs.com/chengmingxiaowu/p/10138681.html

vuex所有核心概念完整解析State Getters Mutations Actions

vuex是解决vue组件和组件间相互通信而存在的,vuex理解起来稍微复杂,但一旦看懂则即为好用: 安装: npm install --save vuex 引入 import Vuex from 'vuex' import Vue from 'vue' Vue.use(Vuex) vuex的几个参数的介绍 State         储存初始化数据 Getters      对State 里面的数据二次处理(对数据进行过滤类似filter的作用)比如State返回的为一个对象,我们想取对象中一个

使用 Vuex 和 vue-router

Vue.js 也有较多周边技术产品,如 Vuex 和 vue-router 等,这些库也可以在 Weex 中很好的工作. 我们基于 Weex 和 Vue 开发了一个的完整项目 weex-hackernews ,在项目中使用了 Vuex 和 vue-router ,能够实现同一份代码,在 iOS.Android.Web 下都能完整地工作. 使用 Vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理工具库,可以利用 Vue.js 的细粒度数据响应机制来进行高效的状态更新.它采用集中式

使用vue2.x+webpack+vuex+sass+axios+elementUI等快速搭建前端项目框架

一.本文将分享如何快速搭起基于webpack+vue的前端项目框架,利用vue的自己的脚手架工具vue-cli搭建起基本的环境配置,再通过npm包管理工具引入相应的依赖来完善项目的各种依赖框架.下面是具体实操. 二.基本命令操作. 1.在开发之前需要首先安装node.js,直接百度搜索或者在其中文官网也可以下载http://nodejs.cn/download/, 在装完node之后npm包管理工具也自动的安装好,安装完之后,在命令行输入node -v或者npm -v,出现版本号说明安装成功.如

简易的vuex用法

vuex是vue中用于管理全局状态的一个组件,用于不同组件之间的通信,下面将介绍它的简单用法 首先安装vue与vuex npm install vue npm install vuex --save 然后创建一个单独的文件store.vue用来对vuex的处理和使用 import vue from 'vue' import vuex from 'vuex' vue.use(vuex) vuex有以下几种选项 state: Vuex store 实例的根 state 对象 mutations: 在

从头开始学习Vuex

一.前言 当我们的应用遇到多个组件共享状态时,会需要多个组件依赖于同一状态抑或是来自不同视图的行为需要变更同一状态.以前的解决办法: a.将数据以及操作数据的行为都定义在父组件; b.将数据以及操作数据的行为传递给需要的各个子组件(有可能需要多级传递) 传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力.在搭建下面页面时,你可能会对 vue 组件之间的通信感到崩溃 ,特别是非父子组件之间通信.此时就应该使用vuex,轻松可以搞定组件间通信问题. 二.什么是Vuex V

Vue.js——快速入门Vuex

一. 什么是Vuex? Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. 上图中绿色虚线包裹起来的部分就是Vuex的核心, state中保存的就是公共状态, 改变state的唯一方式就是通过mutations进行更改. 可能你现在看这张图有点不明白, 等经过本文的解释和案例演示, 再回来看这张图, 相信你会有更好的理解. 二. 为什么要使用Vuex? 试想这样的场景, 比如一个Vue的根实例

Vue.js ——十分钟让你学会 Vuex

一. 什么是Vuex? Vuex Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. Vuex核心 上图中绿色虚线包裹起来的部分就是Vuex的核心, state中保存的就是公共状态, 改变state的唯一方式就是通过mutations进行更改. 可能你现在看这张图有点不明白, 等经过本文的解释和案例演示, 再回来看这张图, 相信你会有更好的理解. 二. 为什么要使用Vuex? 试想这样的场景,