vuex示例

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

简单来说,vuex就是用来集中管理组件的数据的。

使用vuex的示例
在这里插入图片描述
store/index.js

import Vue from 'vue'
import Vuex from 'vuex'
import modleMall from './Mall.js'

Vue.use(Vuex)

export default new Vuex.Store({
  // 存放数据
  state: {
    msg:"老王"
  },
  // 计算属性
  getters:{  
    description:function(state){
			return state.msg
		}
  },
  // 修改数据
  mutations: {
  },
  // 异步修改数据
  actions: {
  },
  // 选择模型
  modules: {
    modleMall
  }
})

store/Mall.js

export default {
	// 设定当前模块带上名字
	namespaced:true,
	state:()=>({
		mallname:"小米商城",
		type:"屌丝专用"
	}),
	getters:{
		description:function(state){
			return state.mallname +state.type
		}
	},
	mutations:{
		setMallname:function(state,payload){
			state.mallname = payload
		},
		setType:function(state,payload){
			state.mallname = payload
		}
	},
	actions:{
        asyncSetType(content,payload){
            setTimeout(()=>{
                content.commit('setMallname',payload)
            },2000)
        }
	}
}

views/Home.vue

<template>
  <div class="home">
    <div>{{modleMall.mallname}}</div>
    <div>{{mallDes}}</div>
    <input v-model="text">
    <button @click="setMallname(text)">改变名字</button>
     <button @click="setName(text)">异步改变名字</button>
  </div>
</template>

<script>
import {mapState,mapGetters,mapMutations, mapActions} from 'vuex'
export default {
  data(){
    return{
      text:""
    }
  },
  computed:{
    // 用对象展开运算符
    ...mapState('modleMall',[mallname]),
    //modleMall中的计算属性description重命名为mallDes
    ...mapGetters('modleMall', {
      mallDes: 'description'
    }),
  },
  methods:{
    // modleMall中的修改数据中setMallname和setType函数进行解构 
    ...mapMutations('modleMall',['setMallname','setType']),
    // modleMall中的异步修改数据中asyncSetType函数进行重命名为setName
    ...mapActions('modleMall',{'setName':'asyncSetType'})

  },
  mounted(){
    console.log(this.$store)
  },
  created(){
    console.log(this.modleMall)
  }
}
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值