五分钟带你玩转vuex(vuex入门)

前言:
我们接触过vue.js的 一定知道在vue中各个组件之间传值的痛苦,在vue中我们可以使用vuex来保存我们需要管理的状态值,值一旦被修改,所有引用该值的地方就会自动更新,那么接下来我们就来学习一下vuex是如何修改状态值的:

一:什么是vuex?
1.1:

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态(他是集中管理数据的工具)。

1.2 vuex的优点:
  • 可以实现父子传值,兄弟传值,隔代传值
  • 能够存放组件之间共享的数据
  • 解决大中型项目中数据共享的问题
二:vuex的组成?

1.state:存储状态(变量)
2. getters:对数据获取之前的再次编译,可以理解为state的计算属性。我们 在组件中使用$ store
3. mutations: 修 改 状 态 , 并 且 是 同 步 的 。 在 组 件 中 使 用$ store.commit(’’",data)。这个和我们组件中的自定义事件类似。
4. actions:异步操作。在组件中使用是$store.dispath(‘自定义事件名’,’'传递的参数)
5. 5. modules:store的子模块,为了开发大型项目,方便状态管理而使用的。这里我们就不解释了,用起来和上面的一样。

三:玩转vuex的两种方法:
3.1 第一种:
3.1.1 安装:
npm installl vuex --save
3.1.2 创建一个store文件夹,里面放入index.js。在main.js里面引入,注册。

在这里插入图片描述

3.1.3 操作一波~
页面
<template>
  <div class="home">
    <h3>这是主页</h3>
   <button @click="prev()"></button>
    {{this.$store.state.count}}
    <button @click="next"></button>
 </div>
</template>
<script>
import { Sumcode } from '../http/api';

export default {
  name: 'Home',

  methods: {
      next(){
      this.$store.dispatch('next',)//通过dispatch请求发送到action
    } 
    },
    }
</script>

store.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
//用来存储数据的
  state: {
    count: 1
  },
  mutations: {
  //在motations里面我们改变state的状态来实现数量的加加减减
    next(state,value){
      state.count++;
     },
    prev(state){
      state.count--;
    
    },
  
  },
  actions: {
  //在这里我们异步操作 发送到motation里面
    next(context){
 
      context.commit('next')
    },
    prev(context){
    
      context.commit('prev')
    },
  },
  //这个也就是我们上面所说的store 的子模块。这样的话比较清晰
  modules: {},
  getters:{}//这个相当于我们vue中的computed计算属性
 // 页面中我们直接通过this.$store.state.getters.data
})

3.2 第二种:

我们使用 …[mapstate] …[mapaction]来实现

import {mapState,mapActions,mapMutations} from 'vuex';
//我们在store里面定义一个count
//store.js:
state:{
count:1
token:'dsfagsrdrgafdvth6',
index:5
}
//页面中:
通过computed中注入mateSate
    computed: {
    	...mapState(['count', 'token', 'index'])
    }
 //   这样的话我们在页面中直接通过{{count}},{{token}}{{index}}直接来获取
// 这个方法的好处就是我们不用写那么长的前缀 哈哈哈
 methods:{
    ...mapActions(['next','prev'])
    //自定义派发两个事件名
 }

 //在actions中方法中通过commit('mutaions方法名',要传递的值);

dispath commit 逻辑操作
vue组件---------->actions--------->mutations------->改变state---->最终同步到vue组件视图上

四:数据持久化操作:
4.1 :localstorage sessionstorage

存值: localstorage.setItem(‘我们要存的数据名称’,存的值)
取值: localstorage.getItem(‘存储时候的那个数据名称’)
在这里插入图片描述

4.2

例如:vuex-persistedstate

使用方法:

第一步:安装:


npm install --save vuex-persistedstate


第二步:在vuex中的index.js引入
import createPersistedState from "vuex-persistedstate";

第三步:在vuex实例上通过plugins注入
export default new Vuex.Store({
  ...
  plugins: [createPersistedState()]

})

这样的话我们在后端就可以直接看到了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值