【问题标题】:Vuex getters with params带参数的 Vuex getter
【发布时间】:2020-05-15 23:45:10
【问题描述】:

我想知道为什么我不能将 vuex getter 与具有默认值的属性一起使用:

getters: {
  getTest: (state, property = 'current') => {
     return state.test[property]
  }
}

当我像这样getTest.includes('something') 使用它时它不起作用但是如果我像这样使用它getTest().includes('something') 它会起作用吗?

因为没有使用参数,所以没有() 也可以工作

【问题讨论】:

    标签: vue.js vuex


    【解决方案1】:

    https://vuex.vuejs.org/guide/getters.html#method-style-access

    getters: {
      getTest: (state) => (property = 'current') => {
        return state.test[property]
      }
    }
    
    // example usage
    this.getTest().includes('something')
    
    

    【讨论】:

    • 那你肯定叫错了!显示你如何称呼它。
    • getTest.includes('something') 和 getTest().includes('something'),来自...mapGetters(['getTest'])
    • getTest().includes('something') 将 100% 工作,基于文档和我的个人经验。让我编辑我的答案
    • 是的,我在问如果我没有传递任何东西,为什么我需要添加(),并且当我没有传递任何东西时有默认值?就像 getter 中没有参数一样。我可以使用 () 没什么大不了的,但我需要查看 10000 行来找到每个最后没有 () 的 getter 调用
    • 因为getter返回一个函数。你需要调用这个函数。
    【解决方案2】:

    getter 的第二个参数是其他 getter:

    Getter 还将接收其他 getter 作为第二个参数

    (https://vuex.vuejs.org/guide/getters.html#property-style-access)

    所以你的property 参数将是一个数组,因此state.test[property] 总是返回undefined

    要将getter用作带参数的函数,您需要让getter返回一个函数,如下所示:https://vuex.vuejs.org/guide/getters.html#method-style-access

    【讨论】:

      猜你喜欢
      • 2018-05-07
      • 2021-11-05
      • 2017-11-18
      • 2018-04-20
      • 2021-07-19
      • 2020-12-18
      • 2019-06-11
      • 2021-10-29
      • 1970-01-01
      相关资源
      最近更新 更多