`
huangyongxing310
  • 浏览: 490304 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Vuex store

 
阅读更多
Vuex


一个 store 有四个属性:state, getters, mutations, actions。



State
state 上存放的,说的简单一些就是变量,也就是所谓的状态。就是放一些变量

const store = new Vuex.Store({
    state: {
        count:0
    },
    mutations: {
        // 加1
        increment(state) {
            state.count++;
        },
        // 减1
        decrement(state) {
            state.count--
        }
    }
})



Getters
Getter 接受 state 作为其第一个参数:
const store = new Vuex.Store({
  state: {
    todos: [
      { id: 1, text: '...', done: true },
      { id: 2, text: '...', done: false }
    ]
  },
  getters: {
    doneTodos: state => {
      return state.todos.filter(todo => todo.done)
    }
  }
})


computed: {
  doneTodosCount () {
    return this.$store.getters.doneTodosCount
  }
}

getters就是可以对数据进行了处理后的一个缓存,State更新它才会重新计算

Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性)。




Mutation定义更改State的变量值
 const store = new Vuex.Store({
  state: {
    count: 1
  },
  mutations: {
    increment (state) {
      // 变更状态
      state.count++
    }
  }
})


store.commit('increment') //触发increment进行State的变量值的改变

视图触发Action,Action再触发Mutation。
Mutation:必须同步执行。

Action:可以异步,但不能直接操作State。

Action 提交的是 mutation,而不是直接变更状态


https://vuex.vuejs.org/zh/guide/getters.html

分享到:
评论

相关推荐

    vuex对store进行抽离.zip

    "vuex对store进行抽离"这个主题,就是讨论如何在大型Vue项目中有效地利用Vuex进行状态管理,将store模块单独拆分出来,以提高代码的可维护性和可读性。 首先,我们来看`main.js`文件,这是Vue应用的入口文件,通常...

    vuex store登录

    **vuex store登录详解** Vuex 是 Vue.js 生态中的一个状态管理库,它提供了一个集中式的存储空间,用于管理应用中的全局状态。在Vuex中实现用户登录功能,可以帮助我们更好地跟踪用户的登录状态,包括用户名和登录...

    vuex-typex:Typescript构建器,用于对Vuex Store模块的强类型访问

    用于对Vuex Store模块进行强类型访问的TypeScript模式 我真的很喜欢 我只是想借此想法远一点。 我的主要更改是: 避免将$ store / context传递给访问器方法:我们可以通过稍后提供存储来将这些存储在访问器中:...

    vuex中的store

    9. **生命周期和组件通信**:在 Vue 组件中,我们可以通过 `this.$store` 访问到 Vuex Store,从而获取状态、触发动作或改变状态。此外,通过 `mapState`、`mapGetters`、`mapMutations` 和 `mapActions` 这些辅助...

    vuex中store存储store.commit和store.dispatch的用法

    `store.commit` 和 `store.dispatch` 是 Vuex 中用于管理和改变状态的核心方法,它们各自有不同的功能和应用场景。 **1. store.commit** `store.commit` 用于触发一个 **mutation**(状态变更事件)。Mutation 是 ...

    vue3中router和store详细使用教程方法vuex和route.zip

    app.use(Vuex, store) // 注意这里的用法变化,Vue3中使用第二个参数传入store app.mount('#app') ``` 在`store.js`中,你可以定义state、mutations、actions和getters: ```javascript export default new Vuex....

    vuexdemo状态管理

    如果没选,可以手动在 `src` 目录下创建一个 `store` 文件夹,然后创建 `index.js` 文件来初始化 Vuex store。 `store/index.js` 的基本结构可能如下: ```javascript import Vue from 'vue' import Vuex from '...

    vuex-mock-store:for用于vue-test-utils的简单明了的Vuex Store模拟

    银牌赞助商青铜赞助商安装npm install -D vuex-mock-store# with yarnyarn add -D vuex-mock-store用法 :information: :所有示例都使用 API 。 参见以使用其他模拟库。 与: 给定一个组件MyComponent.vue : ...

    对vuex中store和$store的区别说明

    这是因为Vuex将store实例注入到了Vue的原型链上,因此在组件内部,我们可以通过`this`关键字来访问`$store`,进而使用`$store.state`来获取状态,或者使用`$store.getters`、`$store.actions`和`$store.mutations`...

    详解vuex之store拆分即多模块状态管理(modules)篇

    Vuex 最佳实践之一就是将状态(store)拆分成多个模块(modules),使得大型应用的状态更易于管理和维护。 首先,我们来理解Vuex的几个核心概念: 1. **State(状态)**:存储状态(即数据)的地方,相当于“store...

    基于vue3 用vuex状态控制路由和按钮的权限

    2. **结合Vuex**:在守卫中,我们可以从Vuex的store中获取用户的权限,例如`store.getters.getUserPermissions`,然后根据这些权限决定是否允许用户访问目标路由。 **三、按钮权限控制** 1. **计算属性**:Vue组件...

    mini-vuex模拟VUEX实现

    6. **Vue 组件与 Vuex 的结合**:在 Vue 应用中,组件可以使用 `mapState`、`mapGetters`、`mapMutations` 和 `mapActions` 辅助函数方便地访问 Vuex store 中的数据和方法。在 mini-vuex 中,你需要设计一种机制,...

    vuexloading是VueVuex应用程序的多进程复杂装载程序管理

    `vuex-loading`通过在Vuex store中维护一个装载状态模块,跟踪各个独立的进程或API调用的状态。当某个进程开始时,它会触发加载状态的增加,进程结束时则减少。如果所有进程都已完成,整体的加载指示器将被隐藏。这...

    Vuex的使用Demo

    const store = new Vuex.Store({ state: { count: 0 } }) ``` 这里的`count`就是共享状态,可以通过`this.$store.state.count`在任何组件中访问。 2. **getter(Getters)**:getters 可以被看作是计算属性...

    vuex简易计数器

    1. **Store**: Store 是 Vuex 的核心,它是应用中所有组件共享的状态的单例对象。在`vuex-demo1`中,你会看到一个名为`store.js`的文件,其中定义了整个应用的状态、mutation 和 action。 2. **State**: `state`...

    vuex-todos.zip

    - `store` 子目录:Vuex 的 Store 文件,包括 `index.js` 主文件以及可能的模块文件。 - `mutations.js`:定义 Mutations 函数。 - `actions.js`:定义 Actions 函数。 - `getters.js`:定义 Getters 函数。 - ...

    vue中vuex模板

    6. **index**: `store/index.js`是整个Vuex store的入口点,它导入并组合了上面提到的所有模块。在这里,你将创建一个新的`Vuex.Store`实例,并注册`modules`、`state`、`mutations`、`actions`和`getters`。这个...

    Vuex按模块分割的使用方法

    在`src`下,创建一个名为`store`的文件夹,这将是我们的Vuex store的家。在`store`里,我们将创建多个模块文件,每个模块文件代表一个特定的业务领域或功能。 例如,我们可以创建一个`auth.js`文件来处理用户认证...

    VUEX和LocalStorage的应用

    1. **数据持久化**:在Vue组件的created或mounted生命周期钩子中,可以检查LocalStorage是否有数据,如果有,则将数据加载到Vuex store中。同样,当用户做出改变时,可以将更新后的状态保存到LocalStorage。 2. **...

    for用于vue-test-utils的简单明了的Vuex Store模拟-JavaScript开发

    vuex-mock-store Vuex v3.x Store的简单明了的模拟在提交和分发时自动创建间谍,因此您可以专注于测试组件而无需执行商店代码。 帮助我保持工作状态vuex-mock-store Vuex v3.x Store的简单明了的模拟在提交和分发时...

Global site tag (gtag.js) - Google Analytics