vuex简单demo

1、npm 安装vuex包

        vuex可以实现组件间数据共享

npm i vuex

2、在src文件夹下创建store,然后创建index.js文件

state里定义一个全局变量name

import { createStore } from 'vuex'
// VueX 数据管理框架
// VueX 创建了一个全局唯一的仓库,用来存放全局的数据
export default createStore({
  state: { name: 'lgy' },
  // mutation 里面只允许写同步代码,不允许写异步代码
  // commit 和 mutation 做关联
  mutations: {
    change(state, str) {
      state.name = str;
    }
  },
  // dispatch 和 actions 做关联
  actions: {
    changeName(store, str) {
      setTimeout(() => {
        store.commit('change', str)
      }, 2000)
    }
  }
})

3、在main.js引用store

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

createApp(App).use(store).use(router).mount('#app')

4、在about组件中使用name

<template>
  <div class="about">
    <h1 @click="handleChange">This is an about page</h1>
    <h1>{{name}}</h1>
  </div>
</template>
<script>
export default{
  computed: {
    name() {
      return this.$store.state.name;
    }
  },
  methods: {
    handleChange() {
      // 1. dispatch 方法,派发一个 action,名字叫做change
      // 2. 感知到 change 这个action,执行store 中 actions 下面的 change 方法
      // 3. commit 提交一个叫做 change 的数据改变
      // 4. mutation 感知到提交的change改变,执行 change 方法改变数据
      // this.$store.commit('change', 'hello world');
      this.$store.dispatch('changeName', 'hello');
    }
  }
}

</script>

5、store数据改变的步骤流程

1、先安装vuex

2、在store index.js中的state中定义全局共享变量,如name

3、在main.js中引入store

4、在组件中使用name共享变量,this.$store.state.name

5、在组件中改变共享变量name

       

    // 1. dispatch 方法,派发一个 action,名字叫做changeName

      // 2. 感知到 change 这个action,执行store 中 actions 下面的 change 方法

      // 3. commit 提交一个叫做 change 的数据改变

      // 4. mutation 感知到提交的change改变,执行 change 方法改变数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值