• 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>
  • 相关阅读:
    原型链的树形结构
    粗略讲一讲js的代码执行机制
    30天前端打卡整理记录
    简单模拟Vue的数据代理功能
    JavaScript语言精粹读后记录
    JavaScript巧用对象的引用解决三级联动
    es6新了解
    记录小程序开发的n个坑
    比拼人品-拼手气红包的JavaScript实现方式.
    一诺千金:微信小程序的wx.request 与Promise的结合使用
  • 原文地址:https://www.cnblogs.com/tlfe/p/11278226.html
Copyright © 2020-2023  润新知