Vuex

一.安装Vuex

npm i vuex

二.Vuex工作原理

                                                                                                                                                                           vuex 

三.核心概念

1.共有4个状态值

1).state 放数据的

2).getters 监听属性 相当于 Vue 的 computed

3).mutations 事件处理函数

4).actions 触发函数

四.使用方法

1.在Vue组件中使用Vuex

1).引用Vuex及触发 Vuex 方法

 


<template>
  <div class="hello">
    {{a}}                 //渲染方法和实例渲染一样
  </div>
</template>

<script>

import {mapGetters,mapActions} from 'Vuex'     //引用 Vuex  // mspGetters 是 Vuex 的 state 数据 // mapActions 触发 Vuex 中的事件

export default {
  name: 'HelloWorld',
  data () {
    return {
    }
  },
  computed: {
    ...mapGetters(['a'])                        // 把 Vuex 的 state数据 放到计算属性中进行监听得到最新数据  // a Vuex 中的某个数据
  },
    methods:{
        ...mapActions(["increment"]), //increment 是 Vuex中的 actions的某个函数 和vue的 click事件使用方法一样
        click(){
          this.$store.dispath('click',data)  触发Vuex事件 //click 是 Vue中的 actions 的某个执行函数 // data 传的数据
        }
    }
}
</script>

mapGetters 的详细使用方法 : https://blog.csdn.net/XiaoHuangDiLHD/article/details/84310297

2.modules 的文件构建

1).app.js代码格式

const app = {
  state: {a: 1111}, //state 放数据的 相当于Vue的 data
  mutaitions: { //事件处理函数
    SET_A: (state, data) => {  //state 当前模块的state存放的所有数据 // data 事件触发传的参数
      state.a= data
    },
},
  actions: {
    //在页面中 使用 this.$store.dispath('seta',data)来调用某个方法 //seta 触发的事件名 //data                 发送的数据可以是任何格式 比如 json字符串 数组 对象 等等
     seta({ commit },data) {
      commit('SET_A', data) //commit 通过该方法 去触发 mutations里的某个处理函数 // SET_A 
 处理函数的名称 // data 接收 this.$store.dispath() 传的 data 书架
    },
   }
}
export default app //暴露

2).getters.js代码格式

const getters = {
  a: state => state.app.a    // a是要赋新值属性 state是所有模块的state数据 state.app具体哪个模块的数据 sate.app.a 该模块的数据

}
export default getters  //暴露

3).index.js代码格式

import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'
import app from './modules/app'
import a from './modules/a'     //和 app 是一样的
Vue.use(Vuex)
const store = new Vuex.Store({
  modules: {
    app,
    a
  },
  getters            
})
export default store// 暴露

4).main.js

import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'         // Vuex

new Vue({
  el: '#app',
  router,                            //
  store,
  components: { App },
  template: '<App/>'
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值