vue2.x中使用vuex

Vuex是什么?

Vuex是一个专门为Vue.js应用程序开发的状态管理模式。它采用集中式存储来管理应用程序中所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex也被集成到了Vue的官方调试工具vue-devtools中,提供了诸如零配置的time-travel调试、状态快照导入/导出等高级调试功能。

 

这是Vuex的工作原理 

安装Vuex

方法一:使用CDN

<!--引用最新版-->
<script src="https://unpkg.com/vuex@next"></script>
<!--引用指定版本-->
<script src="https://unpkg.com/vuex@4.0.0-rc.1"></script>

方法二:使用模块化安装

npm install vuex@next --save
or
yarn add vuex@next --save

创建Vuex的目录结构 :

src/store
    store/modules
        modules/actions.js
        store/getters.js
        store/mutations.js
        store/state.js
    store/index.js

 Vuex目录详解:

        store/modules:模块化,如果项目大的话,代码会很多,如果全部放一起,不利于管                                       理,所以有了modules

        store/index.js:通俗将就是将所有的模块都导入进来,最终作为Vuex的一个总入口

        store/modules/actions.js:
                                                1、Action 类似于 mutation,不同在于:1.Action 提交的是                                                        mutation,而不是直接变更状态。也就是说,如果想改                                                           变state的值,就必须调用mutations中的方法

                                                2、在actions中做逻辑操作,计算、发送ajax

                                                3、用actions中的方法是:dispath()

                                                4、可以包含任意异步操作

          store/modules/getters.js:

                                                1、实时监听state值的变化(最新状态)

                                                2、getters中必须是一个函数,并且函数必须有返回值,所以                                                        将获取的所有值都写成函数返回值规则

          store/modules/mutations.js:

                                                1、要修改store中的值唯一的方法就是提交mutation来修改

                                                2、mutations在请求数据的时候,是同步的

           store/modules/state.js:

                                                1、设置全局访问的state对象

将Vuex导入main.js中并挂载

import store from './store/index'//导入 Vuex 的文件: store.js
new Vue({
  store,
  router,
  render: h => h(App)
}).$mount('#app')

各个文件的编写方法

        store/index.js:

import Vue from 'vue'
import Vuex from 'vuex'
import state from './modules/state'
import actions from './modules/actions'
import mutations from './modules/mutations'
import getters from './modules/getters'

Vue.use(Vuex);

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

store/modules/state.js:

 

 store/modules/actions.js:

 store/modules/getters.js:

store/modules/mutations.js: 

 

 Vuex在组件页面中的使用state的值方式:

在标签中直接使用

<div>最优秀的前端工程师是:{{ $store.state.name }}</div>

 如果你想直接调用state的值得话,先导入 mapState,然后在 computed 中定义相应的值

import { mapState,mapGetters } from 'vuex'
computed: {
    ...mapState(['name','city','shopCart']),  //userInfo,allState变量
    ...mapGetters(['name'])
  },

然后你就可以直接在标签中使用对应的值了

<div>我是通过mapGetters获取的getters的name值:{{name}}</div>

 在组件页面中调用store/modules/actions.js 中的方法

this.$store.dispatch('addAge',2)
//addAge:就是在actions中定义的方法

在组件中调用store/modules/mutations.js 中的方法

this.$store.commit('changeName','武则天')
//changeName:就是定义在 mutations.js 中的方法

到了这一步Vuex的设置及简单使用就已经基本完成了,还请各位大佬指教       (#^.^#)

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值