Vuex(一)之基本使用

简介: Vuex(一)之基本使用

一、概念

vuex是vue.js应用开发的状态管理模式。vuex就是为了提供一个在多个组件间共享状态的插件

二、状态管理

1. 单界面状态管理

单个组件是如何进行管理的呢?
在这里插入图片描述
如上图:
State:状态
View:视图层,可以针对State的变化,显示不同的信息
Actions:用户的各种操作如点击、输入等会导致状态的改变

<template>
    <div class="test">
        <div>当前计数:{{counter}}</div>
        <button @click="increment">+1</button>                
        <button @click="decrement">-1</button>
    </div>
</template>
<script>
export default {
    name:'HelloWorld',
    data(){
        retrun {
            counter:0
        }
    },
    methods:{
        increment(){
            this.counter++
        },
        decrement(){
            this.counter--
        }
    }
}
</script>
这个案例就涉及到了状态管理,counter需要某种方式被记录下来,也就是我们的State,counter目前的值需要被显示在界面中,也就是View部分,界面发生某些操作时(这里是点击),需要更新状态,也就是Actions
这是vue已经帮我们做好了单个界面的状态管理,单个界面可以看作独立的房间,状态1/状态2/状态3在自己的房间里自己管理自己用是可以的,但是其它的房间用不了你房间里的状态。

2.多界面状态管理

我们希望可以将一些公共的状态交给一个大管家来统一帮助我们管理,不管哪个地方需要用到这些状态都可以访问得到,vuex就是为我们提供大管家的工具。我们需要做的就是将共享的状态抽取出来,交给大管家统一进行管理,到时候每个视图按照规定进行访问和修改。
在这里插入图片描述

三、vuex的使用

1、安装插件
2、创建store对象
3、导出store对象进行挂载
详细步骤:
(1)先创建一个文件夹store,并且在其中创建一个index.js文件,在index.js文件中写入如下代码:

import Vue from 'vue'
import Vuex from 'vuex'
// 1. 安装插件
Vue.use(Vuex)
// 2. 创建store对象
const store = new Vuex.Store({
    state:{
        count:0
    }
    mutations:{
        increment(state){
            state.count++
        },
        decrement(state){
            state.count--
        }
    }
})

// 3. 导出store对象
export default store

(2)我们让所有的Vue组件都可以使用这个store对象,来到main.js文件,导入store对象,并且放在new Vue中,这样,在其他Vue组件中,我们就可以通过this.$store的方式,获取到这个store对象了。

import Vue from 'vue'
import App from './App'
import store from './store/index'
new Vue({
  el: '#app',
  store,
  render: h => h(App)
})

(3)使用vuex中的count
通过this.$store.state.属性的方式来访问状态
通过this.$store.commit('mutation中方法')来修改状态

<template>
    <div class="test">
        <div>{{count}}</div>
        <button @click="increment">+1</button>                
        <button @click="decrement">-1</button>
    </div>
</template>
<script>
export default {
    name:'HelloWorld',
    computed:{
        count:function () {
            return this.$store.state.count
        }
    },
    methods:{ 
        increment () {
            this.$store.commit('increment')
        },
        decrement () {
            this.$store.commit('decrement')
        }
    }
}
</script>

注意事项:
我们通过提交mutation的方式,而非直接改变store.state.count。
这是因为Vuex可以更明确的追踪状态的变化,所以不要直接改变store.state.count的值。

相关文章
|
1天前
|
JavaScript 前端开发
vue日常学习,基本使用
vue日常学习,基本使用
11 1
|
1天前
|
存储 JSON 资源调度
vue3怎么使用i18n
vue3怎么使用i18n
22 5
|
1天前
|
存储 JavaScript
vuex的基本用法
Vuex是Vue.js的状态管理库,用于集中存储和管理共享状态。通过创建Vuex store实例,定义`state`(如`count`)和`mutations`(如`increment`),组件可使用`this.$store.state`访问状态,`this.$store.commit`修改状态。当应用复杂时,可将状态分割成带命名空间的模块,如`cart`,组件内通过`this.$store.state.cart`和`this.$store.commit(&#39;cart/addItem&#39;)`进行访问和修改。
|
1天前
|
缓存 JavaScript
vuex的讲解与相关用法
vuex的讲解与相关用法
11 0
|
2天前
|
存储 JavaScript
vue3中如何使用vuex
首先,在这里回答一个粉丝的问题,为什么有local storage 和session storage还要使用vuex,这里我解释一下,我们要明白浏览器的存储和vuex的存储的不同点,首先,浏览器存在本地,vuex存在内存里,所以vuex刷新会丢失,从现在来看,好像存在浏览器里会更好,但是,有个问题时,存在浏览器里不是响应式的啊,只有存在vuex才是响应式啊,我们通过计算属性或者watch监听下在同步更新下就行,但是,浏览器不支持响应式,所以,我们为了规避掉vuex的的刷新丢失的问题,所以,当刷新时,从浏览器的存储里拿数据,防止在vuex里面,在传给组件,借助vuex的特性,来实本地存储响应式。
|
5月前
|
存储 JavaScript 前端开发
vuex入门
vuex入门
36 0
|
6月前
|
存储 资源调度 JavaScript
vuex详细用法
vuex详细用法
27 0
|
7月前
|
JavaScript API
vue3的基本使用
vue3的基本使用
|
9月前
|
存储 JavaScript 数据管理
分分钟学会vue中vuex的应用(入门教程)
分分钟学会vue中vuex的应用(入门教程)