zoukankan      html  css  js  c++  java
  • vuex入门

    首先先安装vuex

    cnpm i vuex -D

    新建一个store.js的页面在src里面,可以与mian.js同级

    在store中引入vue和xuex等如下

    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex)
    //state用来存储所以的状态和数据
    let state = {
        count:0
    }
    
    // mutations是改变state状态的唯一方式
    // mutations是同步函数,在mutations里面不能进行任何的异步操作,所以的异步操作全部放到actions里面
    let mutations = {
        // 接受state作为第一个参数,要想改变state中的状态必传
        incCount(state,val){
            state.count = val;
        }
    }
    
    //actions和mutations类似,actions提交的是mutations,而不是直接变更状态,所有的异步全部写到actions里面
    let actions = {
        // actions 函数接受一个与 store 实例具有相同方法和属性的 context 对象,因此你可以调用 context.commit 提交一个 mutation,或者通过 context.state 和 context.getters 来获取 state 和 getters。
        ation(context,val){
            context.commit('incCount',val)
        }
    }
    
    const store = new Vuex.Store({
        state,
        mutations,
        actions
    })
    
    // commit()是触发mutations的唯一方式,如果需要传递参数,有两种方式
    // store.commit('incCount')
    // 第一种方式
    // store.commit('incCount',"我就是参数")//此方式只能携带一个参数
    // 推荐使用第二种
    // store.commit({
    //     type:'incCount', //必须有个typ属性,且指向mutations中的函数
    //     val1:"我是参数1",
    //     val2:"我是参数2",
    //     val3:"我是参数3"
    // })
    // 在其它页面想要提交mutations函数使用以下方式
    // this.$store.commit({
    //     type:'incCount',
    //     val:'我是参数1'
    // })
    
    // dispatch()此函数是触发actions的唯一方式
    // store.dispatch('ation','参数')//这里的参数需要先在actions中接收,在由actions传输给mutations
    //推荐使用
    // store.dispatch({
    //     type:'ation',
    //     val:'参数'
    // })
    
    // 在其它页面想要提交actions函数推荐使用以下方式
    // this.$store.dispatch({
    //     type:'ation',
    //     val:'其他页面传递的参数'
    // })
    
    console.log(store.state.count)
    
    // 将store暴露出去
    export default store

    在main.js中引入store文件,并注入到vue实例中

    import Vue from 'vue'
    import App from './App.vue'
    import router from './router'
    
    //引入暴露的store
    import store from '@/store/store'
    
    
    Vue.config.productionTip = false
    
    new Vue({
      router,
      store,//注入到整个vue实例中
      render: h => h(App)
    }).$mount('#app')

    在页面中提交mutations和actions

    <template>
      <div class="about">
        <h1 @click="btn_buttom()">about页面</h1>
      </div>
    </template>
    
    <script>
    export default {
      methods:{
        btn_buttom(){
          // this.$store.commit({
          //   type:'incCount',
          //   val:'来自about的参数'
          // })
    
          this.$store.dispatch({
            type:'ation',
            val:'来自about的参数'
          })
          console.log(this.$store.state.count)
        }
      }
    }
    </script>
  • 相关阅读:
    springboot文件上传: 单个文件上传 和 多个文件上传
    Eclipse:很不错的插件-devStyle,将你的eclipse变成idea风格
    springboot项目搭建:结构和入门程序
    POJ 3169 Layout 差分约束系统
    POJ 3723 Conscription 最小生成树
    POJ 3255 Roadblocks 次短路
    UVA 11367 Full Tank? 最短路
    UVA 10269 Adventure of Super Mario 最短路
    UVA 10603 Fill 最短路
    POJ 2431 Expedition 优先队列
  • 原文地址:https://www.cnblogs.com/tlfe/p/11278226.html
Copyright © 2011-2022 走看看