vuex使用,使用场景

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vuex使用,使用场景相关的知识,希望对你有一定的参考价值。

参考技术A vuex是一个专门为vue构建的状态管理工具,主要是解决多组建状态共享的问题。强调的是集中式管理(组件与组件之间的关系变成了组建跟仓库之间的关系)。

vuex的核心包括:state(存放状态)、mutations(同步的更改状态)、actions(发送异步请求拿到数据)、getters(根据之前的状态发布新的状态)、modules(模块划分)

state发布一条新的数据,在getters里面更具状态派发新的状态,actions发送异步请求获取数据,然后再mutations里面同步的更新数据

使用场景:购物车的数据共享,登入注册

vuex的原理:

vuex实现了一个单项数据流,在全局又有一个state存放数据,当组建要更改state中的数据时,必须通过Mutation进行,mutation同时提供了订阅者模式供外部插件调用获取state数据的更新。而当所有异步操作(常见于调用后台接口异步获取更新数据)或批量的同步操作需要走Action,但Action也是无法直接修改state的,还是需要通过mutation来修改state的数据。最后根据state的变化,渲染到视图上。

vuex的使用

1、src目录下面新建一个vuex的文件夹

2、vuex 文件夹里面新建一个store.js

3、安装vuex 

cnpm install vuex --save

4、在刚才创建的store.js引入vue  引入vuex 并且use vuex

import Vue from 'vue'

import Vuex from 'vuex'

Vue.use(Vuex)

5、定义数据

/*1.state在vuex中用于存储数据*/

var state=

    count:1



6、定义方法 mutations里面放的是方法,方法主要用于改变state里面的数据

var mutations=

    incCount()

++state.count;

   



暴露

const store = new Vuex.Store(

    state,

    mutations,

getters

)

export default store;

组建里面的使用

1.引入 store

import store from '../vuex/store.js';

2、注册

export default

data()

    return              

      msg:'我是一个home组件',

value1: null,

   

,

store,

methods:

    incCount()

this.$store.commit('incCount');  /*触发 state里面的数据*/

   



   

3、获取state里面的数据

this.$store.state.数据

4、触发 mutations 改变 state里面的数据

this.$store.commit('incCount');

getters,有点类似计算属性,改变state里面count数据的时候,会出发getters里面的方法,获取新值

var getters=

computedCount:(state)=>

return state.count*2

);

页面使用:this.$store.getters.computedCount

action

action类似于mutation,不同在于,

action 提交的事mutation,而不是直接改变状态(也就是state里面的值)。

action 可以包含任意异步操作

var actions=

acctionsincCount:(context)=>

context.commit('incCount');

);

页面使用:this.$store.dispatch()

以上是关于vuex使用,使用场景的主要内容,如果未能解决你的问题,请参考以下文章

Vuex

Vuex - 何时使用 getter 以及何时使用状态

深入Vue底层,手写一个vuex

深入Vue底层,手写一个vuex

深入Vue底层,手写一个vuex

深入Vue底层,手写一个vuex