首页 > 解决方案 > Vue - 创建钩子中的错误:“TypeError:无法读取未定义的属性'then'”

问题描述

我试图在对我的 wordpress 后端进行 api 调用之前设置一个 url 参数,但是我在 created hook: "TypeError: Cannot read property 'then' of undefined" 中遇到错误。我究竟做错了什么?

搜索页面.Vue

export default {
    props: {
        page: {
            type: Number,
            required: true
        }
    },
    data() {
        return {
            postsRequest: {
                type: 'posts',
                params: {
                    per_page: this.$store.state.site.posts_per_page,
                    page: this.page,
                    search: null
                },
                showLoading: true
            },
            totalPages: 0,
        }
    },
    computed: {
        getTerm() {
            return this.$route.query.search
        },
        posts() {
            if (this.getTerm) {
                return this.$store.getters.requestedItems(this.postsRequest)
            }
        },
        title() {
            return this.getTerm ? this.getTerm : ''
        }
    },
    methods: {
        getPosts() {
            return this.$store.dispatch('getItems', this.postsRequest)
        },
        setPostsRequestParams() {
            this.postsRequest.params.search = this.getTerm
        },
        setTotalPages() {
            this.totalPages = this.$store.getters.totalPages(this.postsRequest)
        }
    },
    created() {
        this.setPostsRequestParams().then(() => this.getPosts()).then(() => this.setTotalPages())
    }
}
</script>

this.setPostsRequestParams().then(() => this.getPosts()).then(() => this.setTotalPages())给了我错误。

基本上我希望能够从 url ( getTerm())中获取参数值,postsRequest.params.search在进行 api 调用之前将其设置在数据中,然后运行getPosts()​​.

抱歉,如果这是一个愚蠢的错误,仍在学习。

标签: javascriptvuejs2

解决方案


看起来您希望该方法返回一个承诺。目前,它没有返回任何东西。如果希望对.then执行操作this.setPostsRequestParams(),则setPostsRequestParams需要返回类似于 的内容IPromise<[desired return type]>


推荐阅读