searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

vuex的基本介绍及使用

2024-05-30 08:45:39
7
0

一、介绍

      Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

      简单来说,Vuex是一个数据管理框架,创建了一个全局唯一的仓库,用来存放全局的数据。

二、作用

1、Vuex能够保存全局数据(数据仓库),供整个应用使用

2、Vuex保存的数据是响应式的

3、Vuex保存的数据可以跟踪状态的变化

三、核心概念

1、state:放的是全局的数据,定义数据。

2、getters:可以认为是 store 的计算属性。

3、mutations:更改 Vuex 的 store 中的状态的唯一方法。

       Vuex中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的事件类型 (type)和一个回调函数 (handler)。这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数。

       注:mutations里面只允许写同步代码,不允许写异步代码

4、actions: Action 类似于mutation。不同在于:Action 提交的是 mutation,而不是直接变更状态;Action 可以包含任意异步操作。

5、modules:将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割。

四、使用

1、安装vuex:

npm install vuex --save

2、main.js入口文件

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

// use(store):使用vuex提供的仓库store
createApp(App).use(store).use(router).mount('#app')

3、使用vuex

views -> About.vue文件
<template>
  <div>
    <button @click="handleClick">点击变更</button>
    <h1>{{ myName }}</h1>
  </div>
</template>

<script>
export default {
  name: "About",
  computed: {
    myName() {
      return this.$store.state.name;
    },
  },
  methods: {
    handleClick() {
      // 想改变数据,vuex要求第一步,必须派发一个action,此处的change就是一个action
      // dispatch()就是派发,有两个参数dispatch('派发的action的名字','可以传递一个参数')
      // dispatch('change')就表示要派发一个change的action,告诉store要做修改
      this.$store.dispatch("change", "2s后变更新名字");
    },
  },
};
</script>
store -> index.js文件
import { createStore } from 'vuex'

// VueX数据管理框架
// VueX创建了一个全局唯一的仓库,用来存放全局的数据
export default createStore({
  state: {//state内放的是全局的数据,定义数据
    name:'初始名字'
  },
  // mutations里面只允许写同步代码,不允许写异步代码
  mutations: {
    // 修改数据第四步:commit提交的叫做change的mutation被执行;其中data为commit触发的入参
    change(state, data){
      // 第五步:在mutation里面修改数据
      state.name=data;
    }
  },
  actions: {
    // 修改数据,第二步,store感知到触发了一个叫做change的action,执行change方法;其中payload为dispatch派发的入参
    change({ commit }, payload){
      // 第三步:提交一个commit,触发一个mutation
      // commit('change', payload);//立即触发
      // 2s后触发
      setTimeout(()=>{
        commit('change', payload);
      },2000)
    }
  },
  modules: {
  }
})

五、总结

       dispatch方法与action做关联,commit方法与mutations做关联。

0条评论
0 / 1000
刘财依
4文章数
1粉丝数
刘财依
4 文章 | 1 粉丝
刘财依
4文章数
1粉丝数
刘财依
4 文章 | 1 粉丝
原创

vuex的基本介绍及使用

2024-05-30 08:45:39
7
0

一、介绍

      Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

      简单来说,Vuex是一个数据管理框架,创建了一个全局唯一的仓库,用来存放全局的数据。

二、作用

1、Vuex能够保存全局数据(数据仓库),供整个应用使用

2、Vuex保存的数据是响应式的

3、Vuex保存的数据可以跟踪状态的变化

三、核心概念

1、state:放的是全局的数据,定义数据。

2、getters:可以认为是 store 的计算属性。

3、mutations:更改 Vuex 的 store 中的状态的唯一方法。

       Vuex中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的事件类型 (type)和一个回调函数 (handler)。这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数。

       注:mutations里面只允许写同步代码,不允许写异步代码

4、actions: Action 类似于mutation。不同在于:Action 提交的是 mutation,而不是直接变更状态;Action 可以包含任意异步操作。

5、modules:将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割。

四、使用

1、安装vuex:

npm install vuex --save

2、main.js入口文件

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

// use(store):使用vuex提供的仓库store
createApp(App).use(store).use(router).mount('#app')

3、使用vuex

views -> About.vue文件
<template>
  <div>
    <button @click="handleClick">点击变更</button>
    <h1>{{ myName }}</h1>
  </div>
</template>

<script>
export default {
  name: "About",
  computed: {
    myName() {
      return this.$store.state.name;
    },
  },
  methods: {
    handleClick() {
      // 想改变数据,vuex要求第一步,必须派发一个action,此处的change就是一个action
      // dispatch()就是派发,有两个参数dispatch('派发的action的名字','可以传递一个参数')
      // dispatch('change')就表示要派发一个change的action,告诉store要做修改
      this.$store.dispatch("change", "2s后变更新名字");
    },
  },
};
</script>
store -> index.js文件
import { createStore } from 'vuex'

// VueX数据管理框架
// VueX创建了一个全局唯一的仓库,用来存放全局的数据
export default createStore({
  state: {//state内放的是全局的数据,定义数据
    name:'初始名字'
  },
  // mutations里面只允许写同步代码,不允许写异步代码
  mutations: {
    // 修改数据第四步:commit提交的叫做change的mutation被执行;其中data为commit触发的入参
    change(state, data){
      // 第五步:在mutation里面修改数据
      state.name=data;
    }
  },
  actions: {
    // 修改数据,第二步,store感知到触发了一个叫做change的action,执行change方法;其中payload为dispatch派发的入参
    change({ commit }, payload){
      // 第三步:提交一个commit,触发一个mutation
      // commit('change', payload);//立即触发
      // 2s后触发
      setTimeout(()=>{
        commit('change', payload);
      },2000)
    }
  },
  modules: {
  }
})

五、总结

       dispatch方法与action做关联,commit方法与mutations做关联。

文章来自个人专栏
Vuex
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0