wncf's blog wncf's blog
首页
书签
  • JavaScript
  • vue
  • css
  • 收藏正则
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)

wncf

编写代码并热爱生活
首页
书签
  • JavaScript
  • vue
  • css
  • 收藏正则
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)
  • JavaScript总结

    • javascript面试题
    • 数据类型判断
    • js一些技巧
    • 正则表达式
    • 常用的数组方法
    • 对象常用的方法
    • typeScript
    • js常用库
    • 浏览器常用api
    • js常用工具函数
    • 三级目录

  • css总结

  • 其他

  • 前端
  • vue总结
  • V2
wncf
2022-05-18
目录

VueX

# vueX

vuex 是为了 vue 应用程序的状态管理模式,集中管理应用所有组件的状态,并且共享组件状态

# 什么是组件的状态?

组件的状态又可以称为数据,组件内部的状态可以通过props与$emit进行修改,

# vuex解决的问题是什么

当组件的结构很复杂,需要跨组件传值时

需要多个组件共同共享状态时

# vuex结构

# state

负责维护所用到的变量,可以在页面中通过this.$store.state.变量名 的方式访问

不可直接修改

# getters

可声明一个变量,通过函数的方式对state的变量进行状态修改后返回,值只会在依赖值进行变化后才会被重新计算,相当于computed

// 来自官网的栗子
state: {
    todos: [
      { id: 1, text: '...', done: true },
      { id: 2, text: '...', done: false }
    ]
  },
getters:{
     doneTodos: state => {
      return state.todos.filter(todo => todo.done)
    }

}

页面中通过this.$store.getters.变量名的方式访问

可以返回一个函数,来实现对 getters传参的目的

getters: {
  // ...
  getTodoById: (state) => (id) => {
    return state.todos.find(todo => todo.id === id)
  }
}
store.getters.getTodoById(2)

# mutations

修改state的唯一方法(同步方法),可通过传参的方式进行修改

 mutations: {
    increment (state,payload) {
      // 变更状态
      state.count=payload
    }
  }

在页面中调用进行修改使用this.$store.commit('increment',payload)

# actions

  • actions 类似与mutations ,但actions并不直接修改状态,而是通过mutation提交进行修改

  • actions可以包含任意异步操作

 actions: {
    ActionIncrement ({commit},payload) {
        //调用mutaions修改状态
      commit('increment',payload)
    }
  }
编辑 (opens new window)
上次更新: 2022/08/22, 12:00:52
最近更新
01
腾讯云宝塔自动化部署方案
03-22
02
vscode格式化
12-11
03
github使用问题与解决方案
09-16
更多文章>
Theme by Vdoing | Copyright © 2022-2023 Wncf | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式