变异后VueX Getter没有运行

Posted

技术标签:

【中文标题】变异后VueX Getter没有运行【英文标题】:VueX Getter not running after Mutation 【发布时间】:2020-05-26 16:31:47 【问题描述】:

我已经连接了 VueX,并且 Mutations 工作正常,但是,Getter 方法没有再次运行。我在不使用 TS 类组件语法的情况下将 VueJS 与 TypeScript 一起使用。

我的代码如下:

export default new Vuex.Store(
  state: 
    Started: false
  ,
  getters: 
    getStarted(state): boolean 
      console.log(state.Started)
      return state.Started;
    
  ,
  mutations: 
    setStarted(state, payload): void 
      console.log("mutated", payload)
      state.Started = payload;
    
  ,
  actions: 
  ,
  modules: 
  
)

我正在正确地提交子组件中的突变

emitStartedClicked(): void 
  console.log("from child clicked");
  this.$store.commit("setStarted", false);

我像这样在父组件中听 getter:

computed: 
    getStarted(): void 
      console.log("gottem");
      return this.$store.getters.getStarted;
    
  

我在子组件单击按钮时触发突变,并希望在其父组件的计算属性中执行 getter。

我的控制台输出如下:

如您所见,在初始页面加载时,计算属性中的 getter 似乎正在工作,但是,在触发突变的按钮单击之后,getter 没有更新。 这里有什么问题?

谢谢

【问题讨论】:

你试过设置 state.Started 到 false 以外的东西吗? 不,我为什么要这样做? 哦,它起作用了...我将其设置为 true 并且它起作用了 很高兴听到。开始是错误的,然后 this.$store.commit("setStarted", false);只需将其更新为 false 我现在明白了,getter 没有触发,因为我将 state 初始化为 false 并且在我的突变中也将其设置为 false ......所以我想有一些 VueX 逻辑没有'如果状态的值没有改变,则触发 getter 【参考方案1】:

您是否尝试过将 state.Started 设置为 false 以外的内容?

一开始是假的,然后 this.$store.commit("setStarted", false);只需将其更新为 false

【讨论】:

以上是关于变异后VueX Getter没有运行的主要内容,如果未能解决你的问题,请参考以下文章

异步api调用后如何使用vuex getter

Vuex getter 在模块内部时没有反应

从持久存储重新水化后,Vuex getter 不会更新

Vuex - Getter

Vuex:从动作中调用 getter

vuex使用