页面重新加载导致Vuex getter返回未定义

时间:2019-02-05 17:54:52

标签: vue.js vuex vuetify.js

使用Vue.js(FE的Vuetify)。

页面重新加载会导致Vuex中的吸气剂无法从存储中提取所需数据。该getter返回未定义。可以在GitHub上找到代码:https://github.com/tineich/timmyskittys/tree/master/src

请在timmyskittys.netlify.com/stage1上查看有关此问题的完整详细信息。该页面包含有关该问题的完整信息以及如何查看该问题的说明。

请注意,问题说明中提到了www.timmyskittys.com。这是主要站点。 timmyskittys.netlify.com是我的测试网站。因此,它们在所有意图和目的上都是相同的。但是,我有关此问题的演示在Netlify站点上。

3 个答案:

答案 0 :(得分:0)

我在您提到的网站上阅读了完整的期刊。这是一个普通情况。

说,关于猫的详细信息页面网址:www.timmyskittys.com/stage2/:id

现在,在按路由保护beforeEnter()中,您可以在存储中设置cat-id。然后从您的组件使用cat-id(从吸气剂中读取)调用api

答案 1 :(得分:0)

我找到了解决问题的方法:

我必须移动该动作的调用,该动作调用将将.json文件(dbdata.json)加载到App.vue中的compute()中的变异。最初是在Stage1.vue中完成的。

谢谢大家的回复。

答案 2 :(得分:0)

我遇到了同样的问题,我的“解决方案”是否可以调用它来做一个计时器,以便给商店时间使事情变得正确,就像这样:

<v-treeview
    :items="items"
    :load-children="setChildren"
  />
</template>

<script>
import { mapGetters } from 'vuex'

const pause = ms => new Promise(resolve => setTimeout(resolve, ms))

export default {
  data () {
    return {
      children: []
    }
  },
  computed: {
    ...mapGetters('app', ['services']),
    items () {
      return [{
        id: 0,
        name: 'Services',
        children: this.children
      }]
    }
  },
  methods: {
    async setChildren () {
      await pause(1000)

      this.children.push(...this.services)
    }
  }
}
</script>

即使这远非理想,它仍然有效。