开发者问题收集

TypeError:无法在模板标签中读取Null的属性

2022-03-05
3418

我的 Vue/Laravel 应用程序中出现“TypeError:无法读取 null 属性”错误。我从 API 获取数据。我可以在脚本标记中访问数据,例如在 mounted 方法中,但在模板中我无法访问数据。

<template>

    <article class="hentry blog-post single-post single-post-v3">

        <router-link :to="'/kategori/'+post.category.slug" class="post-category bg-primary">{{post.category.title}}</router-link>

                        
        <h1 class="post-title">{{post.title}}</h1>
        
    ...

</template>

<script>
export default {
    components: {
        FeaturedPosts,
        Comments
    },
    async beforeRouteEnter(to, from, next) {

        const returned = (await axios.get(route("api.post", to.params.slug))).data.response

        next(vm => {
            vm.post = returned.post;
            vm.comments = (returned.comments != undefined) ? returned.comments.data : null;
            vm.commentsPagination = (returned.comments != undefined) ? returned.comments : null;
        });

    },
    data() {
        return {

            post: null,
            comments: null,
            commentsPagination: null,

        };
    },
}
</script>

它给出“未捕获(在承诺中)TypeError:无法读取 null 属性(读取‘category’)”。我可以在 mounted() 方法中访问 post.category,但在模板中我不能。

1个回答

next(vm => ...) 回调在实例创建后触发,不应依赖在那里初始化的状态,因为初始渲染发生在未初始化状态下。

它应该是:

return {
  post: [],
  ...

或者:

<article v-if="post" ...>
Estus Flask
2022-03-05