Vue父组件向子组件传数据,子页面数据不更新,传递数据为异步接口获取,

214 阅读1分钟
  1. 不更新原因:子组件已渲染出界面,接口数据才调出来

  2. 父子组件加载的生命周期:

    父created => 父onBeforeMount => 子created => 子onBeforeMount => 子onMounted => 父onMounted

    • 加载父组件中的数据created,
    • 然后再去中执行父组件挂载前的onBeforeMount
    • 子组件中的数据加载
    • 子组件中的挂载dom
    • 再去父组件中挂载dom

    也就是说vue是先挂载子组件在挂载父组件

    父子组件更新顺序:

    父onBeforeUpdate => 子onBeforeUpdate => 父onUpdated => 子onUpdated

    父子组件销毁顺序

    父onBeforeUnmount => 子onBeforeUnmount => 子onUnmounted => 父onUnmounted

  3. 解决方案

    1. 通过v-if控制子组件挂载的时机;
    2. 子组件中通过watch监听props的值更新视图;
    3. 子组件中通过computed监听props的值来更新视图
    4. definedAsyncComponent异步组件(没法在接口获取后加载)

参考链接:blog.csdn.net/reason12513…