• Vuex基本用法


     1、

         

     2、

    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex)
    
    export default new Vuex.Store({
    // 公共数据源 state: { count: 0 },
    // 突变 mutations: { }, actions: { }, modules: { } })

    (1) State

    方 法 一:

    方 法 二:

    // 1、
    import {mapState} from ‘vuex’ 
    
    // 2、
    computed:{ 
        ...mapState([‘count’])
     
    }

    (2) Mutation 突变

     

     

     

     

     点击实现隔一秒加1:

    store.js

      mutations: {
        add (state) {
          setTimeout(() => {
            state.count++
          }, 1000)
        }
      },
     
    父组件 App.vue
     
    <template>
      <div>
        <my-addition></my-addition>
        <span>=================</span>
        <my-substraction></my-substraction>
      </div>
    </template>
    
    <script>
    import Addition from './components/Addition'
    import Substraction from './components/Substraction'
    export default {
      data () {
        return {}
      },
      components: {
        'my-addition': Addition,
        'my-substraction': Substraction
      }
    }
    </script>
    

    子组件 Addition. vue

    <template>
      <div>
          <h3>最新count值:{{$store.state.count}}</h3>
          <button @click="handle">延时+1</button>
    
      </div>
    </template>
    
    <script>
    import { mapMutations } from 'vuex'
    export default {
      data () {
        return {}
      },
      methods: {
        ...mapMutations(['add']),
        handle () {
          this.add()
        }
      }
    }
    </script>
    

      

    点击延时+1按钮,会发现 count 的值还是初始值,未发生变化:

     所以 不要在 mutations 突变中执行异步操作 (Action 用于处理异步操作)

    (3)Action 

    如果通过异步操作变更数据,必须通过Action,而不能使用Mutation,但是在Action中还是要通过触发 Mutation 的方式间接变更数据。


     
  • 相关阅读:
    linux screen工具
    nginx 启动重启脚本
    Docker入门
    时间管理定律
    贪婪算法
    指针与指针的地址
    双向链表(前插操作,删除操作)
    Trie树检索字符串
    函数调用
    字符串匹配算法
  • 原文地址:https://www.cnblogs.com/sylys/p/13678676.html
Copyright © 2020-2023  润新知