【发布时间】:2020-07-26 10:12:52
【问题描述】:
我有一个容器组件,里面有一个导航栏组件。我在 beforeCreate 中调用了一个 api,然后在这里设置变量,并在 vue 'state'(数据)中设置它们,然后将它们作为道具传递给导航栏组件。但是,这些都不会出现。我在这里做错了什么?
<template>
<Navbar :title='title' />
<template>
<script>
export default{
name:'example',
data(){
return{
title:''
};
},
beforeCreate: function(){
axios.post('')
.then(response => {
this.title = response.title
})
}
}
</script>
我已经控制台记录了来自 api 的响应数据,所以我知道它正在正确地生成数据。我还在已安装的生命周期中控制台记录了数据变量“标题”,它有数据。但是导航栏的 props 还是空的。
【问题讨论】:
-
您的
<script>标记中缺少封闭的export default { }。是不是搞错了? -
对不起,这只是一个例子。我的实际代码中有这个。
-
你能创建一个示例沙箱吗?
-
尝试在
created方法中添加您的axios请求而不是beforecreate -
@tao 没有一个答案是正确的。 Axios 使用 Promise 并异步检索响应,而不考虑缓存。
this.title = response.title保证在组件安装后被评估。为此使用 beforeCreated 会产生误导,但这里肯定不是问题。
标签: vue.js