vuex-超级详细基本使用方法(超级好看)

vue详细介绍


在这里插入图片描述

一、什么是vuex

1.1官方介绍:

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

1.2简单总结:

vuex就是一个数据管理的仓库。
1. 也就是把组件公共的数据放在一个仓库里统一管理,在这个仓库的内部对数据进行增删查改。
2. 这样可以减少组件之间的通信,让组件数据的共享化。只要仓库的数据发生变化,各个组件引用到的数据也会更新。这样使得数据的可维护性更好。


二、vuex 基础

2.1.state
概念:

定义全局参数,所有的数据都会存储到state里面,也就是用来存数据的地方

使用:

借助辅助函数

<script>
//引入辅助函数
import { mapMutations, mapState } from "vuex";
  computed: {
    ...mapState(["count"]),
  },
 </script>
<template>
    <h5>count :{{ $store.state.count }}</h5>
    <h5>count :{{ count }} 辅助形式</h5>
   </template>

在这里插入图片描述

2.2.muations
概念:

在vuex中,mutations里面存的就是一些操作数据的方法,也是将唯一能够修改数据的方法放在mutation对象里。

使用:

同样也是两种访方式,
常规方法 / 辅助函数

    //定义修改vuex数据方法 只能这里修改数据
  mutations: {
      addCount(state, payload) {
          state.count += payload
      }
     },
 //直接从原型上调用
   <button @click="$store.commit('addCount', 1)">+1常规方法</button>
   //利用辅助函数
     <button @click="addCount(100)">+100辅助函数</button>
   <script>
   import { mapMutations, mapState } from "vuex";
     methods: {
   ...mapMutations(["addCount"]),
 },
   </script>

2.3.actions
概念:

Actions和Mutations比较类似,包含的都是一些方法,区别在于 Action支持异步操作,一般会与Mutations的方法配合使用,在Action里面进行异步操作,然后再Mutations去更改数据

使用:
//vuex内定义action方法
 // 异步修改数据
    actions: {
        setCount2(context, payload) {
            setTimeout(() => {
                console.log(context, '111');
                context.commit('addCount', payload)
            }, 1000)
        },
    },
//常规调用
 <button @click="$store.dispatch('setCount2', 5)">异步</button>
//借用辅助函数,
<button @click="setCount2(5)">异步辅助函数</button>
import { mapActions } from "vuex";
  methods: {
    ...mapActions(["setCount2"])
    }
2.4.getters
概念:

每次打开浏览器优先执行该方法,获取所有的状态并且对数据进行一些加工和处理,有点像过滤器。
也可以再getters里面导出state数据的跨界访问方式。

使用:
//vuex 定义getters方法
    getters: {
        count: (state) => state.count
        //也可以做数据处理
         showAge(state) {
              if (state.count< 18) {
                 return '仙女'
               } else {
         	      return '老巫婆'
               }
         }
        
    },
  <div>getters导出: {{ count }}</div>
  <script>
  import { mapGetters } from "vuex";
    computed: {
    ...mapGetters(["token", "name", "count"])
    }
  </script>
2.5modules
概念:

在数据种类多,且有命名重复的情况,Vuex 允许将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割

modules中每一个模块都可以设置一个namespace=true,也就是相当于给每个子模块仓库装了一个门()

使用:

    modules: {
        user: {
        	//门
            namespaced: true,
            state: {token: '21111'},
            mutations: {ddCount(state) {state.token += 1}},
            actions: {},
            getters: {}
        },

访问里面的数据
namespaced: false,模块里面的每个子模块的数据方法跟上面的方法一样的
namespaced:true,访问这个子模块的时候需要定位,也就是找到门再能拿数据,比如

//访问state
  <div>用户token: {{ $store.state.user.token }}</div>
     ...mapState("setting", ["name"]),
  //访问mutations:
     ...mapMutations(["user/upDateToken"]),
总结

差不多就这样,关于vuex的使用的话就潦草的这么多,关于模块、namespace的详细用法可以再去查一查,vuex的使用还是给组件通信带来很大的方便!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以在uniapp中使用vuex-persistedstate来实现持久化存储,具体操作步骤如下: 1. 安装vuex-persistedstate:在uniapp项目中进入终端,执行npm install vuex-persistedstate --save命令进行安装。 2. 在store目录下创建一个plugins.js文件,将以下代码复制到文件中: ``` import createPersistedState from 'vuex-persistedstate' export default ({store}) => { createPersistedState({ key: 'uniapp-vuex', storage: { getItem: key => uni.getStorageSync(key), setItem: (key, value) => uni.setStorageSync(key, value), removeItem: key => uni.removeStorageSync(key) } })(store) } ``` 3. 在store目录下的index.js文件中引入plugins.js,并将其作为store的插件: ``` import Vue from 'vue' import Vuex from 'vuex' import plugins from './plugins' Vue.use(Vuex) const store = new Vuex.Store({ plugins, ... }) export default store ``` 4. 至此,使用vuex-persistedstate实现持久化存储的配置已完成。在需要存储的state属性中添加@Persist注解即可。 例如,在store目录下的index.js文件中: ``` import {Persist} from 'vuex-persistedstate' const state = { count: 0 } const mutations = { increment (state) { state.count++ } } const actions = { increment ({commit}) { commit('increment') } } export default { state, mutations, actions, plugins: [Persist('count')] } ``` 在以上代码中,通过@Persist('count')表示count属性需要进行持久化存储。 5. 至此,在uniapp中使用vuex-persistedstate实现持久化存储的配置已完成,可以在需要的地方进行使用
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值