为啥 vuexfire 不更新状态而是正确更新 ui?

Posted

技术标签:

【中文标题】为啥 vuexfire 不更新状态而是正确更新 ui?【英文标题】:Why is vuexfire not updating state but updating the ui correctly?为什么 vuexfire 不更新状态而是正确更新 ui? 【发布时间】:2019-11-05 21:23:14 【问题描述】:

我正在尝试为一个项目设置带有 firestore 的 vuexfire,我想我已经按照文档完成了所有工作。我设法使用 vuex/vuexfire 从组件内的 firestore 获取数据并在 UI 中正确显示,但是在 devtools 中检查状态时,我发现我的状态没有改变。

我使用 vue-cli 设置了我的项目,并按照 vuexfire 文档和示例制作了一个基本的 todo 应用程序。

这是我的商店文件:

import Vue from 'vue'
import Vuex from 'vuex'
import  vuexfireMutations, firestoreAction  from 'vuexfire'
import  db  from './db'

Vue.use(Vuex)

export default new Vuex.Store(
  state: 
    todos: []
  ,
  mutations: 
    ...vuexfireMutations
  ,
  actions: 
    bindTodos: firestoreAction(( bindFirestoreRef ) => 
      return bindFirestoreRef('todos', db.collection('todos'))
    ),
    unbindTodos: firestoreAction(( unbindFirestoreRef ) => 
      unbindFirestoreRef('todos')
    )
  
)

这是加载和显示 ui 的基本组件:

<template>
  <div>
    <h1>Home</h1>
    <p v-for="todo in todos" :key="todo.id"> todo.name </p>
  </div>
</template>

<script>
import  mapState, mapActions  from 'vuex'

export default 
  name: 'Home',
  computed:  ...mapState(['todos']) ,
  methods:  ...mapActions(['bindTodos']) ,
  created: function () 
    this.bindTodos()
  

</script>

如您所见,UI 显示待办事项,但状态未显示:

我尝试在 devtools 中刷新状态,但它不起作用。任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

Vue 开发工具

设置 新的 Vuex 后端:OFF

【讨论】:

【参考方案2】:

原来是chrome的vue开发工具有问题,我最终决定卸载它并重新安装它,它成功了。状态实际上正在更新,但开发工具没有显示它。

希望这对未来的人有所帮助!

【讨论】:

嗨@yzoldan,你愿意看看另一个Vuexfire问题吗? ***.com/questions/59903702/…

以上是关于为啥 vuexfire 不更新状态而是正确更新 ui?的主要内容,如果未能解决你的问题,请参考以下文章

使用 vuexfire 动态绑定 firebase 集合列表

为啥反应文本组件不显示对我的数组状态的更新

Tab+ViewPager 不更新而是显示奇怪的警告预期状态 3 found 2

为啥我工作时状态栏没有更新?

vuex中为啥更新其中一个状态的值还能同步更新另一个状态的

反应状态更新不正确