如何将变量从 axios 获取请求传递给 vuejs 中的子组件?

Posted

技术标签:

【中文标题】如何将变量从 axios 获取请求传递给 vuejs 中的子组件?【英文标题】:How to pass variable from axios get request to sub-component in vuejs? 【发布时间】:2019-09-11 15:55:27 【问题描述】:

我通过以下方式获取 axios 请求:

index() 
   axios.get('/list/items').then(response => 
       this.items = response.data.items;
       this.stats = response.data.stats;

如果我这样做 console.log(this.stats) 我会看到正确的数据列为数组。

我想将此数据传递给子组件,例如:

<stats :stats-list="stats"></stats>
or

<stats v-bind:stats-list="stats"></stats>

在我的子组件中,我尝试获取以下数据:

props: ['statsList'],
mounted() 
    console.log(this.statsList);

我在这里未定义。

我应该怎么做才能从父组件中获取这些数据?

【问题讨论】:

当组件被挂载时你正在记录它 - 直到那时 axios 请求还没有完成! 【参考方案1】:

您应该将初始值传递给统计信息,或使用道具验证来设置默认值 计算也可以。

props: ['rawStatsList'],
computed: 
  statsList() return this.rawStatsList? this.rawStatsList : []; 

使用 v-if 将隐藏块直到 axios 完成,但请注意如果 axios 有错误它不会显示

【讨论】:

【参考方案2】:

试试这个 -

如果

<stats :stats-list="stats" v-if="statsList"></stats>

让我知道它是否有效!

【讨论】:

它应该可以工作,你能给我访问一些东西吗,比如一些 repo 或代码 sn-p? 我在 axios 中创建了一个 var renderComponent = false,请求后我将它设置为 true 并调用你的 if,它现在似乎可以工作了。 克隆这个 repo 并检查 - github.com/siddhartharora02/vue-stack

以上是关于如何将变量从 axios 获取请求传递给 vuejs 中的子组件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vuejs 中使用 axios 从数组中发布多个请求?

Vuejs将动态数据从父组件传递给子组件

Vuejs Axios POST 请求从 Laravel 后端获取 HTTP422 错误

axios GET 请求有效,但无法将结果内容分配给变量

axios 调用从第一个 api 获取响应并传递到第二个 api

从 Vuejs 到 Django REST 框架的 Axios POST 请求