初识vuex

2018-05-08  本文已影响4人  回不去的那些时光

1、使用前需要在项目中安装一下vuex

npm install vuex --save  或  cnpm install vuex --save

2、需要了解一下vuex是什么以及vuex提出的几个概念

3、实战(计数器)

目录结构如下图


image.png

index.js

  import Vue from 'vue'
  import Vuex from 'vuex'
  import state from './state'
  import mutations from './mutations'
  import actions from './actions'

  Vue.use(Vuex)

  export default new Vuex.Store({
        state,
        mutations,
           actions
  })

state.js

const state = {
    count: 0
}

export default state;

mutations.js

const mutations = {  
  //        箭头函数方式                                                                                                                   
  //    increment: state => state.count++,                                                                                                  
  //    decrement: state => state.count--       
                                                                                        
    increment(state) {                                                                                                                  
      state.count ++                                                                                                                  
  },                                                                                                                                  
  decrement(state) {                                                                                                                  
    state.count --                                                                                                                  
  }                                                                                                                                   
}                                                                                                                                       
                                                                                                                                    
export default mutations;          

actions.js

const actions = {
increment({commit}) {
    commit('increment');
},
decrement({commit}) {
    commit('decrement');
}
}

export default actions;              

main.js

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


Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  store,    //  挂载store
  components: { App },
  template: '<App/>'
})

HelloWorld.vue

  <template>
    <div class="hello">
    <h1>{{count}}</h1>
    <button @click="increment">+</button>
    <button @click="decrement">-</button>
</div>
</template>

<script>
import { mapState, mapActions } from 'vuex'

export default {
    name: 'HelloWorld',
    data() {
        return {
            msg: 'Welcome to Your Vue.js App'
        }
    },
    computed: mapState([
        'count'
    ]),
    methods: {
        ...mapActions([
            'increment',
            'decrement'
        ])
    }
}
</script>
上一篇 下一篇

猜你喜欢

热点阅读