vuex

  1. vuex是vue配套的公共数据管理工具,可以把共享数据保存在vuex,方便整个程序中任何组件直接获取或修改我们的公共数据(vuex是为了保存组件直接共数据诞生的。如果组件有共享数据可以挂vuex。就不需要父子传值,如果数据无需共享,就没必要放vuex)vuex是一个全局共享数据存储区域,相当于数据仓库
  2. 父组件传值给子组件绑定:,子组件传递给父组件数据调用this.$emit

  3. 一般多层组件嵌套,或者没有任何关系,兄弟传值(即父父传值,可以用vuex)

1.下载

npm install vuex –save

2.两种使用vuex方法,一种直接main.js上挂、另一种单独放一个store文件下(第一种),这里写单独使用文件写法 action异步略(不会

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

//hello Vuex
const state= { //类比data
    count: 1 //状态
}
const mutations= { //方法类比methods
    add(state) {
        state.count++;
    },
    reduce(state) {
        state.count--;
    }
    const getters = {  //类比计算属性
        count(state) {
        return state.count+=100;
    }
}
}

export default new Vuex.Store({
    state, //暴露出去
    mutations,
    getters

})

3.demo.vue引入

<script>
import store from '../vuex/store/store.js' //因为不是index.js名字要写全
export default {
    store
}
</script>

4.插值的写法与方法的写法 commit固定vuex函数写法 ---简化写法用到mapState等...扩展运算符在下面展开写

{{$store.state.count}}  @click="$store.commit('add')" 

5. (第二种) main.js

import  Vuex from 'vuex'
Vue.use(Vuex)
var store = new Vuex.Store({
  state: {
    //state想象data,准门存储数据
  },
  mutations: {},
  getters: {},
  actions: {}
})
new Vue({
  el: '#app',
  router,
  store,
  components: { App },
  template: '<App/>'
})

如果在组件中想要访问storestate数据,只能通过this.$store.state.***

为什么能直接访问store,只要挂载到vm上就能全局,任何组建都能使用store存取数据

demo.vue

<template>
  <div>
    <button @click="add"></button>
    <input type="text" v-model="$store.state.count"/>
  </div>
</template>

<script>
export default {
  methods: {
    add() {
  //  this.$store.state.count++; // 这么用可以但是不建议这样用(方法2选1,不推荐直接子组件搞)
      this.$store.commit('increment')
    }
  }
}
</script>

vuex简化写法不写了,主要是...map

import { mapState,mapMutactions,mapGetters } from 'vuex' //状态和方法
computed: {
        ...mapState(['count']),
        ...mapGetters(['count'])
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值