vuex的使用

一时失言乱红尘 2021-09-13 15:56 522阅读 0赞

vuex概念

  1. Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式

vue安装

  1. npm install vuex --save
  2. yarn add vuex

配置

1.在src下新建一个store文件夹,文件夹里新建store.js
在这里插入图片描述
2.在index.js里引入vue、vuex

  1. import Vue from 'vue';
  2. import Vuex from 'vuex'
  3. //使用
  4. Vue.use(Vuex)

3.在main.js里引入vuex文件

  1. import { store} from './store/store'
  2. new Vue({
  3. store:store, //使用store
  4. el: '#app',
  5. router,
  6. components: { App },
  7. template: '<App/>',
  8. })

什么情况下使用vuex

如果需要构建一个中大型单页应用,则会需要更好的组件外部管理状态,这时最好使用vuex

vuex基本组成

  • state:用于存储数据,类似vue实例的data属性。

store.js中

  1. //创建且声明一个对象
  2. export const store = new Vuex.Store({
  3. state:{
  4. isShow:true,
  5. items:[
  6. {
  7. name:"张三",
  8. num:"1"
  9. },
  10. {
  11. name:"李四",
  12. num:"2"
  13. },
  14. {
  15. name:"王五",
  16. num:"3"
  17. }
  18. ]
  19. }
  20. })

外部组件中调取数据:

  1. computed:{
  2. itemList(){
  3. return this.$store.state.items
  4. }
  5. },
  6. //这里有两种办法
  7. //p在computed的itemList方法中循环
  8. <p v-for="item in itemList">{ { item.num}}{ { item.name}}</p>
  9. //p直接指向store中的state的items数组
  10. <p v-for="item in this.$store.state.items">{ { item.num}}{ { item.name}}</p>
  • getters:用来获取state里的属性值),在实例里用 this.store.state.属性名 来获取值
    store.js

    getters:{

    1. numChange(state){
    2. return state.items.forEach(item=>{
    3. item.num+=100
    4. })
    5. }

    }

组件中:

  1. //写法一:
  2. <p v-for="item in this.$store.getters.numChange">{ { item.num}}{ { item.name}}</p>
  3. //写法二:
  4. <button @click="numTurn">改变数字</button>
  5. computed:{
  6. numChange(){
  7. return this.$store.getters.numChange
  8. }
  9. },
  • mutations:用于递交更改,对state对象中的属性数据进行更改。
    可以使用mutations配合vuex提供的commit方法来修改state中的状态
    store.js

    export const store = new Vuex.Store({
    state:{

    1. isShow:false,
    2. myData:'',
    3. items:[
    4. {
    5. name:"张三",
    6. num:1
    7. },
    8. {
    9. name:"李四",
    10. num:2
    11. },
    12. {
    13. name:"王五",
    14. num:3
    15. }
    16. ]

    },
    mutations:{

    1. //定义一个函数动态修改state的状态值
    2. numTurn(state){ /这里的state代表上面的State
    3. state.items.forEach(item=>{
    4. item.num+=100
    5. })
    6. }

    }
    })

组件中

  1. //写法一:
  2. <button @click="$store.commit('numTurn')">改变数字</button>
  3. //写法二:
  4. <button @click="numTurn">改变数字</button>
  5. methods:{
  6. numTurn(){
  7. this.$store.commit('numTurn')
  8. }
  9. }
  • actions(类似于Mutations):用于进行递交异步更改,通过调用mutations实现对数据的更改。
  • module:将 store 分割成模块(当东西存放太多的时候,可以考虑进行拆分)

actions与mutations的区别:

Aciton提交的是mutation,而不是直接变更状态
Action可以包含任何异步操作

发表评论

表情:
评论列表 (有 0 条评论,522人围观)

还没有评论,来说两句吧...

相关阅读

    相关 vuex使用

    9.1、理解vuex 1. 概念:专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的

    相关 Vuex 使用

    Vuex > Vuex是一个针对Vue.js开发的状态管理模式。说简单点儿就是一个工具,可以管理(修改或设置)所有组件用到的数据,而不需要借助之前的event bus或者

    相关 Vuex使用

    前言 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,本文示例是基于vue-cli4创建的vue2项目。 简

    相关 vuex使用

    VUE + vuex的使用总结如下(查阅资料): 写在前面 本文旨在通过一个简单的例子,练习vuex的几个常用方法,使初学者以最快的速度跑起来一个vue + vue

    相关 Vuex使用

    (。^。) 来扯一扯Vuex呗~ Vuex:是一个专为vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方