如何重新运行Vuex Getter

时间:2018-07-26 08:54:53

标签: javascript vue.js vuex

也许我误解了Vuex中的getter,但是说我有一个getter可以获取DOM元素(例如div)的大小。我会做这样的事情:

const getters = {
  getContainerWidth (state) {
    return document.getElementById('main-content').clientWidth;
  }
}

现在,当我启动我的应用程序时,所有的吸气剂似乎都立即运行了。如果div在启动时不可用怎么办?如何重新运行吸气剂?

我现在像这样运行吸气剂:

import store from '@/store'
store.getters['myModule/getContainerWidth']

我认为这可能会起作用:

store.getters['myModule/getContainerWidth']()

但是由于store.getters是一个包含属性和值的对象,并且这些值不是函数,所以我无法重新运行它们。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

来信者应根据state字段来作出反应。您想观察clientWidth的变化-它不起作用。

如果要像函数一样使用它,只需从getter返回函数:

const getters = {
  getContainerWidth (state) {
    return () => {
       let container = document.getElementById('main-content');
       return container ? container.clientWidth : 0
    };
 }

}

并像getContainerWidth()

一样使用它