zoukankan      html  css  js  c++  java
  • vuex的小demo

    效果图:

    vue的app.vue

    <template>
      <div>
      <p>click {{count}} times,count is  {{evenOrOdd}}</p>
        <button @click="increment">+</button>
        <button @click="decrement">-</button>
        <button @click="incrementIfOdd">odd</button>
        <button @click="incrementasync">async</button>
      </div>
    </template>
    
    <script>
       export  default {
           data(){
             return{
               count:0
             }
           },
    
         computed:{
           evenOrOdd(){
             return this.count%2===0 ? '偶数':"奇数"
           }
         },
         methods:{
           increment(){
               let count=this.count
               this.count= count+1
           },
           decrement(){
             let count=this.count
             this.count= count-1
           },
           //如果是奇数才增加
           incrementIfOdd(){
             let count=this.count
             if(count%2===1){
               this.count= count+1
             }
           },
           //过一秒才增加
           incrementasync(){
               setTimeout(()=>{
                 let count=this.count
                 this.count= count+1
               },1000)
           }
         }
       }
    </script>
    
    <style>
    
    </style>

    vuex的app.vue

    <template>
      <div>
      <p>click {{$store.state.count}} times,count is  {{evenOrOdd}}</p>
        <button @click="increment">+</button>
        <button @click="decrement">-</button>
        <button @click="incrementIfOdd">odd</button>
        <button @click="incrementasync">async</button>
      </div>
    </template>
    
    <script>
       export  default {
         computed:{
           evenOrOdd(){
             return this.$store.getters.evenOrOdd
           }
         },
         methods:{
           increment(){
             //通知vuex去增加
             this.$store.dispatch('increment')  //触发store中对应的action调用
           },
           decrement(){
             this.$store.dispatch('decrement')
           },
           //如果是奇数才增加
           incrementIfOdd(){
             this.$store.dispatch('incrementIfOdd')
           },
           //过一秒才增加
           incrementasync(){
             this.$store.dispatch('incrementasync')
           }
         }
       }
    </script>
    
    <style>
    
    </style>

    vuex的store.js

    //vuex的核心管理对象模块
    import Vue from 'vue'
    import  Vuex from 'vuex'
    
    Vue.use(Vuex)
    
    //状态
    const  state = {   //初始化状态
        count:0
    }
    
    //包含多个更新mutations函数的对象
    const  mutations = {
        //增加的mutation
        INCREMENT(state){
          state.count++
        },
        //减少的mutation
       DECREMENT(state){
        state.count--
      }
    }
    
    //包含多个更新actions函数的对象
    const  actions = {
      //增加action
      increment({commit}){
        commit("INCREMENT")
      },
      decrement({commit}){
        commit("DECREMENT")
      },
      incrementIfOdd({commit,state}){
        if(state.count%2===1){
          commit("INCREMENT")
        }
      },
      //异步的action
      incrementasync({commit}){
        setTimeout(()=>{
          commit("INCREMENT")
        },1000)
      }
    }
    
    //包含多个更新getters函数的对象
    const  getters = {
          evenOrOdd(state){
            return state.count%2===0 ? '偶数':"奇数"
          }
    }
    export default new Vuex.Store({
      state,//状态
      mutations,//包含多个更新state函数的对象
      actions,//对应多个对应事件回调函数的对象
      getters // 包含多个getter计算属性函数的对象
    })

    vuex的main.js

    // The Vue build version to load with the `import` command
    // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
    import Vue from 'vue'
    import App from './App'
    import store from './store'
    
    
    /* eslint-disable no-new */
    new Vue({
      el: '#app',
      components: { App },
      template: '<App/>',
      store   //所有的组件对象都多了一个$store
    })
  • 相关阅读:
    Swift,数组
    Android-Binder(一)
    Android 前台服务
    Android-Service和Thread
    Android-认识Service
    Android-属性动画
    Android-Activity的切换效果
    Android-LayoutAnimation
    django模板解析 循环列表中 切片和求长度
    ubuntu16 安装cron 以及使用
  • 原文地址:https://www.cnblogs.com/quitpoison/p/10008671.html
Copyright © 2011-2022 走看看