vuex使用

cnpm install vuex -S

步骤一:先定义vuex核心的文件夹 store 并在里面加入 index.js

1、不使用  modules 的情况下,所有的文件都在   index.js中定义
state          定义字段,类似我们的页面的data
actions      这个阶段用来请求后台数据,然后把后台数据给发送到 mutations  函数方法里面
mutations  可以做逻辑操作,跟 methods  一样
getters       将state里面定义的字段发送出去

store->index.js

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
//1 定义字段,类似我们的页面的data
state: {num: 10,goods: []},

//3 这个阶段是可以做逻辑操作,跟 methods  一样 //这里的调用有两种,
(1)actions里面调用,commit('mutations里面定义的方法名',具体的参数)
(2)页面上通过  this.$store.commit('mutations里面定义的方法名',具体的参数)

    mutations: {
        mAdd(state, count) {console.log(state,count);state.num = state.num + count},
        addShopping(state, name) {state.goods.push(name)}
    },
 //2 一般情况不用这个,这个阶段用来请求后台数据,然后把后台数据给发送到 mutations  函数方法里面
    actions: {
        // 至少要有一个参数,context上下文对象,触发mutations中函数执行,或者直接改state中数据都可以
        add(context, count) {
            // 使用commit,触发mutations中得函数
            // console.log(context,count)
            context.commit('mAdd', count)  // 会触发mutations中得mAdd的执行
        },
        addShopping(context, name) {//下面的注释是伪代码
                    // 1.这里起ajax请求,检查name库存够不够,2.假设库存不够,弹个不够的消息,3.alert('库存不够了')
                    // 4.return
            context.commit('addShopping', name)
        }    }})

步骤二:在main.js中引入store,然后可以在页面用 this.store来调用store

main.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'///////////////////////////////////////////////////////////////////
import Vuex from "vuex";  // 引入vuex核心库////////////////////////////////////////////////
import elementui from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(Vuex) // 应用Vuex插件  也就是将Vuex插件加入到Vue对象的对象属性中
Vue.config.productionTip = false
Vue.use(elementui)
new Vue({
  router,
  store,//////////////////////////////////////////////////////////////////////////////////////
  render: h => h(App)
}).$mount('#app')

步骤三:在具体页面上使用(带modules的),比如HomeView.vue页面

views->HomeView.vue

<template>
  <div class="home">
    <h1>1 vuex的使用 -基本使用(操作state的数据)</h1>购物车商品数量:{{ $store.state.num }}
    <br><button @click="handleAdd">点我加购物增1</button>
    <h1>组件间通信</h1>
    <ul><li>苹果<button @click="add('苹果')">+</button></li><li>桃子<button @click="add('桃子')">+</button></li><li>梨<button @click="add('梨')">+</button></li></ul>
    <br><ShppingCard></ShppingCard>
  </div>
</template>

<script>import ShppingCard from "@/components/ShppingCard";
export default {
  name: 'HomeView',data() {return {}},
  methods: {
    handleAdd() {
      // this.$store.state.num += 1//                               1 直接操作
      // this.$store.dispatch('add', 2)  //add 必须是action中得函数//  2 正统方式,通过dispatch触发actions
      this.$store.commit('mAdd', 3)//                               3 直接操作mutations
    },
    add(name) {
      // this.$store.state.goods.push(name)//                        1 直接操作
      this.$store.dispatch('addShopping', name)//                    2 正常套路
    }      },
  components: {ShppingCard}    }
</script>

components->ShppingCard.vue

<template><div>购物车商品:{{ $store.state.goods }}</div></template>
<script>export default {name: "ShppingCard"}</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容

  • 自定义vue全局组件use使用(解释vue.use()的原理) 我们在前面学习到是用别人的组件:Vue.use(V...
    tengrl阅读 2,375评论 0 0
  • 一. 概述 React与Vue是我们熟悉的两大前端主流框架,来自官方的解释,Vue是一套用于构建用户界面的渐进式框...
    QiShare阅读 1,483评论 0 2
  • 目录 安装 注意这里如果使用的是vue2版本需要指定vuex版本为3,如果用的是vue3版本那可以用最新的vuex...
    itfitness阅读 424评论 0 2
  • 第一步:下载cnpm install vuex --save 第二步:在src目录下创建store目录,在stor...
    大笑一声阅读 299评论 0 0
  • 一、安装: npm install vuex --save 二、在src目录下新建一个名为store的文件夹,为方...
    在前端搞笑阅读 228评论 2 5