【问题标题】:Vue lifecycle hook race conditionVue 生命周期钩子竞争条件
【发布时间】:2021-03-26 07:53:39
【问题描述】:

我有一个关于 Vue 生命周期钩子的问题。我有一些方法想在钩子中首先调用,但之前调用了另一种方法。

所需的方法是从beforeMount 调用的loadData()。此方法负责 API 请求。但是,它在 getIndex 方法之后调用。

首先调用的方法是getIndex,我希望它最后调用:

myFile.vue

<b-form>                
   <app-select
      labelName="Name"
      fieldType="Type"
      :val="getIndex('M','Q',null,null)">
   </app-select>
</b-form>

我尝试从mounted()beforeMounted() 拨打loadData(),但每次都是第二次。有人知道答案吗?谢谢

【问题讨论】:

    标签: javascript vue.js vuejs2 vue-component lifecycle-hook


    【解决方案1】:

    解决这个问题的一种简单方法是使用v-if 延迟&lt;app-select&gt; 的呈现,直到数据准备好:

    <app-select v-if="loadedData" ...
    

    其中loadedDatathis.loadedData 或钩子完成加载时将填充的任何数据属性。在数据准备好之前,&lt;app-select&gt; 不会开始渲染。这本质上类似于手表的概念,但在模板中。

    【讨论】:

    • 谢谢。会尝试
    • 如果我到处使用 getIndex(),我怎么能推迟渲染?
    • 将所有内容包装在 &lt;div v-if="loadedData"&gt; 中。或者在这个组件的父组件中加载数据并将v-if放在那里,将数据作为道具传递:&lt;thischild v-if="loadedData" :data="loadedData"&gt;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2018-04-23
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 2020-01-15
    • 2017-11-22
    相关资源
    最近更新 更多