当前位置:   article > 正文

在 Vue 组件中获得 Vuex 状态

怎么在vue结构里判断vuex里的状态

那么我们如何在 Vue 组件中展示状态呢?由于 Vuex 的状态存储是响应式的,从 store 实例中读取状态最简单的方法就是在计算属性中返回某个状态:

  1. // 创建一个 Counter 组件
  2. const Counter = {
  3. template: `<div>{{ count }}</div>`,
  4. computed: {
  5. count () {
  6. return store.state.count
  7. }
  8. }
  9. }

每当 store.state.count 变化的时候, 都会重新求取计算属性,并且触发更新相关联的 DOM。

然而,这种模式导致组件依赖全局状态单例。在模块化的构建系统中,在每个需要使用 state 的组件中需要频繁地导入,并且在测试组件时需要模拟状态。

Vuex 通过 store 选项,提供了一种机制将状态从根组件“注入”到每一个子组件中(需调用 Vue.use(Vuex)):

  1. const app = new Vue({
  2. el: '#app',
  3. // 把 store 对象提供给 “store” 选项,这可以把 store 的实例注入所有的子组件
  4. store,
  5. components: { Counter },
  6. template: `
  7. <div class="app">
  8. <counter></counter>
  9. </div>
  10. `
  11. })

通过在根实例中注册 store 选项,该 store 实例会注入到根组件下的所有子组件中,且子组件能通过 this.$store 访问到。让我们更新下 Counter 的实现:

  1. const Counter = {
  2. template: `<div>{{ count }}</div>`,
  3. computed: {
  4. count () {
  5. return this.$store.state.count
  6. }
  7. }
  8. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/256916
推荐阅读
相关标签
  

闽ICP备14008679号