美文网首页
关于vuex心得

关于vuex心得

作者: yguang94 | 来源:发表于2018-08-01 16:02 被阅读0次

之前使用vuex都是迷迷糊糊的,今天从新缕了一遍

1.安装用npm 后面要加上 --save 因为这个vuex包后面成产环境也要用.
2.在src文件夹下新建一个文件夹,起个名字,比如"vuex"或者"store"之类的
3.然后在文件夹下建一个js文件,叫store.js或者index.js都行
4.在文件里面,用improt引入vuex和vue,然后用Vue.use()引用

import Vuex from 'vuex'
import Vue from 'vue'

Vue.use(Vuex)

5.在min.js中用import引入,并在下面的实例化vue对象的时候加入

import store from './store/index'

new Vue({
  el: '#app',
  router,
  store,        //<--这里
  components: { App },
  template: '<App/>'
})

下面说下项目中的应用

直接上代码,看注释

index.js

//之前说的引入
import Vuex from 'vuex'
import Vue from 'vue'

Vue.use(Vuex)

//增加常量对象
const state = {
  loginName: '',
  loginState: -1
}

//下面是方法 
//这里的 mutations 是固定的写法,意思是改变的,
//所以先不用着急,只知道我们要改变 state 的数值的方法,
//必须写在 mutations 里就可以了。
//必须写在 mutations 里就可以了。
//必须写在 mutations 里就可以了。
const mutations = {
  changeLogin(state,status){
    state.loginState = status;
  },
  updLoginName (state, name) {
    state.loginName = name
  }
}

//actions 和上前讲的 Mutations 功能基本一样
//不同点是,actions 是异步的改变 state 状态,而 Mutations 是同步改变状态。
//actions 是可以调用 Mutations 里的方法的
const actions = {
  loginAction({commit},y){
    commit('changeLogin',y);
  },
  updLoginName({ commit }, x){
    commit('updLoginName', x)
  }
}

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

vue组件1 -- 传入/修改

import { mapActions } from 'vuex' //引入
function load(vue) {
    let that = this
    C.call('getUserInfo', {}).then(function (d) {
      vue.userName = d.userName;
      vue.status = d.status;
      vue.updLoginName(vue.userName);      //给vuex传入用户名
      vue.loginAction(vue.status)                  //给vuex传入登录状态
    })
  }
export default {
    data() {
      return {
      };
    },
    methods: {
      ...mapActions([
        'updLoginName',
        'loginAction'
      ])
    }
  };

vue组件2 -- 获取

//script
import { mapMutations } from 'vuex'

  export default {    
    methods: {
      ...mapMutations([
        'loginName',
        'loginState'
      ])
    }
}
<div v-if="$store.state.loginState !== 0"> 
  <span>{{ $store.state.loginName }}</span>
</div>
<div v-if="$store.state.loginState === 0">
  <span>请登录</span>
</div>

END

自学前端,写的有偏颇之处,还请指点一二

相关文章

  • 关于vuex心得

    之前使用vuex都是迷迷糊糊的,今天从新缕了一遍 1.安装用npm 后面要加上 --save 因为这个vuex包...

  • vuex心得

    一、store是一个状态管理工具 (vueX中只有唯一 一个store)用途 :存数据 取数据 改数据 把需要共享...

  • vuex心得

    一、state vuex中的数据源,需要保存的数据就保存在这里。vuex的状态存储是响应式的。当 Vue 组件从 ...

  • 2018-01-24

    追书神器WEB版开发心得 项目结构 vuex 状态管理

  • 4.Vuex

    vuex官网 现在将 vuex 整合到我们的 vue-complex 应用中 有关于vuex的详细介绍 ,可以看看...

  • 展开语法

    关于vuex ...mapActions的问题 展开语法

  • 关于vuex

    -主要是应用在vue.js中管理数据状态的一个库-通过创建一个集中的数据存储,供程序中所有的组件访问--store...

  • 关于vuex

    1、vuex是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。 什么是“状态管理模式”? ...

  • 关于VUEX

    简单的说就是存放一些项目里常用值的地方。如导航菜单,人员信息,地区信息等。 该状态值为响应式的,即数值发生变化时所...

  • vuex小白入门

    首先:Vuex是什么? 有关于Vuex,官网是这样定义的:Vuex 是一个专为 Vue.js 应用程序开发的状态管...

网友评论

      本文标题:关于vuex心得

      本文链接:https://www.haomeiwen.com/subject/zcmhvftx.html