初学vue2 之使用vuex

使用vue-cli 搭建vue项目

通过npm安装vuex  npm install vuex --save

在main.js中引入和配置vuex

import Vue from 'vue'
import 'es6-promise/auto'  // 防止浏览器不支持promise 可通过 npm install es6-promise --save 安装
import App from './App'
import router from './router'
import vuex from 'vuex'

/* eslint-disable no-new */
Vue.use(vuex);
var store = new vuex.Store({//store对象
    state:{
        show:"123456"
    }
})

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

在组件中使用

<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
    <h2>Essential Links</h2>
    <h1>{{$store.state.show}}</h1>
  </div>
</template>

<script>
export default {
  created(){
      this.fetchData()
  },
  watch:{
      '$route':'fetchData'
  },
  methods:{
    fetchData(){
      var _this = this
      console.log(_this.$store.state.show) // 123456
      _this.$store.state.show = "654321"
    },
  },
  name: 'HelloWorld',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  },
}
</script>
当项目有很多组件时,将所有 store对象都放在了main.js里可能会比较杂乱不利于管理,我们可以为每一个组件都配置一个store。
先在src下新建一个文件夹叫store

在store下新建index.js文件

import 'es6-promise/auto'
import Vue from 'vue'
import vuex from 'vuex'
Vue.use(vuex);
export default new vuex.Store({
    state:{
        show:'bbbbbb'
    },
})

修改main.js

import Vue from 'vue'
// import 'es6-promise/auto'
import App from './App'
import router from './router'
// import vuex from 'vuex'

/* eslint-disable no-new */
// Vue.use(vuex);
// var store = new vuex.Store({//store对象
//     state:{
//         show:"aaaaaaa"
//     }
// })

import store from './store'

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

现在main.js和vuex的内容就分开了,然后我们可以为某一组件单独写一个store,比如home组件

在store下新建home_store.js文件

export default {
    state:{
        hometext:"home的内容"
    }
}

在store下index.js中引入

import 'es6-promise/auto'
import Vue from 'vue'
import vuex from 'vuex'
Vue.use(vuex);

import home_store from './home_store.js';//引入某个store对象

export default new vuex.Store({
    state:{
        show:'bbbbbb'
    },
    modules: {   // 添加modules
        home: home_store
    }
})

这时就可以在组件中使用

<h1>{{$store.state.home.hometext}}</h1>


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值