【问题标题】:Vue component check if a vuex store state property is already filled with dataVue 组件检查 vuex 存储状态属性是否已填充数据
【发布时间】:2020-07-03 16:32:45
【问题描述】:

这是我的设置。状态中的状态“类别”是从 json 端点异步获取的。

在组件中我想使用这些数据,但如果我重新加载页面,类别总是空的。

methods: {
        onSubmit() {
            console.log(this.filter);
        },
        formCats(items) {
            console.log(items);
            // const arr = flatten(data);
            // console.log(arr);
        }
    },
    created() {
        const data = this.categories;

        this.formCats(data);
    },
    computed: {
        ...mapState(['categories'])
    }

我还尝试了 async created() 和 await this.categories。也没有按预期工作!如果有人可以帮助我,那就太好了。谢谢!

【问题讨论】:

    标签: vue.js vuejs2 vue-component vuex


    【解决方案1】:

    发生这种情况是因为异步获取直到组件已经加载后才完成。有多种方法可以解决这个问题,这是一种。删除created 并将formCats 方法转换为computed

    computed: {
      ...mapState(['categories']),
      formCats() {
        let formCats = [];
        if (this.categories && this.categories.length) {
          formCats = flatten(this.categories);
        }
        return formCats;
      }
    }
    

    formCats 一开始会是一个空数组,当this.categories 提取完成后它会立即变成你的格式化类别。

    【讨论】:

    • 嗨,丹,谢谢,与此同时,我还找到了一个解决方案来监视它(也可以工作)。有没有更好的解决方案推荐,为什么?我对 vue 比较陌生,所以我很感激每一个提示。
    • 嗨,不客气。这是一个选项,第三个选项是响应已解决的异步承诺。我最喜欢watch 的选项,因为它更通用,更有可能强化不太清晰的反应模式。但它工作正常。 Vue guide on watchers 说“计算属性在大多数情况下更合适”,但承认可能需要手表(这里不需要,但您可以使用您更喜欢的任何一种)。
    猜你喜欢
    • 2019-05-24
    • 2020-04-28
    • 1970-01-01
    • 2014-07-16
    • 2021-04-28
    • 1970-01-01
    • 2018-01-09
    • 2019-10-05
    • 2018-01-29
    相关资源
    最近更新 更多