vue3 onMounted异步函数同步请求async/await实现

 更新时间:2023年07月03日 11:05:30   作者:CUI_PING  
这篇文章主要为大家介绍了vue3 onMounted初始化数据异步函数/同步请求async/await实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

项目需求

在项目中遇到一个问题,就是打开页面时,显示的不正确,在onMounted(挂载完数据) 中初始化来的数据没渲染上, 这是因为,数据重新赋值没在onUpdated(更新完data 数据)之前, 而是在之后执行的, 需要在onMounted钩子函数中增加async/await;

特别注意: 在onMounted中,从API请求到的数据, 赋值给响应式data 数据,建议只赋值一次

代码

//导入使用的API 
import { reactive, toRefs, getCurrentInstance,onBeforeMount, onMounted,onBeforeUpdate,onUpdated,onBeforeUnmount, onUnmounted, watch,computed} from "vue"
 export default{
   components: {xx},
   props: {},
   setup(props, context){
      console.log("*******setup******")
      //获取当前实例
      const {ctx, proxy} = getCurrentInstance()
      // 定义响应式data 数据
      const state = reactive({
      })
      console.log("*******end reactive******")
      // 定义方法
      const methods = {
         async dealData(firstResData){
           if(firstResData.status == "finished"){
              state.collection_data = firstResData.data
              state.colection_id = firstResData.id
              await get(api+state.colection_id).then((resData) => {
                state.layoutX = resData.x
                state.layoutY = resData.y
                console.log("state.layoutX"+state.layoutX)
                console.log("state.layoutY"+state.layoutY)
             })
           }
        },
        // ***********async/await 实现请求同步功能**************
        async refreshData(){
          await get(api).then(firstResData=>{
              console.log("state.curStatus="+firstResData.status)
              methods.dealData(firstResData)
          }).catch(()=>{
          })
        },
      }
      console.log("*******end methods******")
      onBeforeMount(()=>{
        // dom 挂载前
        console.log("*******onBeforeMount******")
      })
      onMounted(async()=>{
        //dom 挂载后
        console.log("*******onMounted******")
        state.collection_id = proxy.$route.query.id
        await methods.init()
      })
      onBeforeUpdate(()=>{
        //对响应式data数据有更新, 更新前
        console.log("*******onBeforeUpdate******")
      })
      onUpdated(()=>{
        //对响应式data数据有更新, 更新后
        console.log("*******onUpdated******")
      })
      onBeforeUnmount(()=>{
        //销毁页面组件前, 即关闭
        console.log("*******onBeforeUnmount******")
      })
      onUnmounted(()=>{
        //销毁后
        console.log("*******onUnmounted******")
      })
      return {
        ...toRefs(state),
        ...methods,
      }
  }

打印结果

*******setup******
*******end reactive******
*******end methods******
*******onBeforeMount******
*******onMounted******
*******onBeforeUpdate******
*******onUpdated******
state.curStatus=3
state.layoutX150
state.layoutY280
*******onBeforeUpdate******
##############################以下是子组件中打印的信息,可以不关注
*******setup in MyXgPlayer******
props.layoutX=150
props.layoutY=280
*******onBeforeMount in MyXgPlayer******
*******setup in MyXgPlayer******
props.layoutX=150
props.layoutY=280
*******onBeforeMount in MyXgPlayer******
*******onUpdated******
*******onMounted in MyXgPlayer*******
*******onMounted in MyXgPlayer*******

以上就是vue3 onMounted异步函数同步请求async/await实现的详细内容,更多关于vue3 onMounted async/await的资料请关注脚本之家其它相关文章!

相关文章

  • 详解vue中this.$emit()的返回值是什么

    详解vue中this.$emit()的返回值是什么

    这篇文章主要介绍了详解vue中this.$emit()的返回值是什么,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Vue下拉框值变动事件传多个参数方式

    Vue下拉框值变动事件传多个参数方式

    这篇文章主要介绍了Vue下拉框值变动事件传多个参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • Vue中tinymce富文本功能配置详解

    Vue中tinymce富文本功能配置详解

    TinyMCE是一款易用、且功能强大的所见即所得的富文本编辑器,跟其他富文本编辑器相比,有着丰富的插件,支持多种语言,能够满足日常的业务需求并且免费,本文小编给大家详细介绍了Vue中tinymce富文本功能配置,需要的朋友可以参考下
    2023-11-11
  • vue 使用print-js 打印渲染不出来问题

    vue 使用print-js 打印渲染不出来问题

    这篇文章主要介绍了vue 使用print-js 打印渲染不出来问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Vue使用Antd中a-table实现表格数据列合并展示示例代码

    Vue使用Antd中a-table实现表格数据列合并展示示例代码

    文章介绍了如何在Vue中使用Ant Design的a-table组件实现表格数据列合并展示,通过处理函数对源码数据进行操作,处理相同数据时合并列单元格
    2024-11-11
  • vue中使用mxgraph的方法实例代码详解

    vue中使用mxgraph的方法实例代码详解

    这篇文章主要介绍了vue中使用mxgraph的方法实例代码详解,需要的朋友可以参考下
    2019-05-05
  • vue实现顶部左右滑动导航

    vue实现顶部左右滑动导航

    这篇文章主要为大家详细介绍了vue实现顶部左右滑动导航,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Vue组件化开发思考

    Vue组件化开发思考

    这篇文章主要介绍了Vue组件化开发的思考以及相关的原理介绍,如果你对此有兴趣,可以学习参考下。
    2018-02-02
  • antd Form组件方法getFieldsValue获取自定义组件的值操作

    antd Form组件方法getFieldsValue获取自定义组件的值操作

    这篇文章主要介绍了antd Form组件方法getFieldsValue获取自定义组件的值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • VUE实现日历组件功能

    VUE实现日历组件功能

    本篇文章主要介绍了VUE实现日历组件功能,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03

最新评论