美文网首页
Vue3 内置组件Suspense

Vue3 内置组件Suspense

作者: 邢走在云端 | 来源:发表于2021-06-27 13:54 被阅读0次

    什么是Suspense

    Suspense组件可以等待某个异步组件解析完成的前后的显示情况

    比如一个组件是图片,它里面是图片资源是网络请求过来的,我们就能使用Suspense 展示在这个请求未完成的情况下展示的另外一种样式。

    使用方式

    这个组件有两个具名插槽

    default - 默认的插槽。可以放置异步的组件

    fallback - 可以放置组件未加载前的样式 比如 loading

    例子

    AsyncComponent.vue 这是一个异步的组件

    <template>
      <div>
        <img :src="result.message" alt="">
      </div>
    </template>
    <script lang="ts">
    import { defineComponent } from 'vue';
    import axios from "axios";
    export default defineComponent({
      name: 'AsyncComponent',
      async setup() {
        const imgData = await axios.get('https://dog.ceo/api/breeds/image/random')
        return {
          result: imgData.data
        }
      }
    });
    </script>
    

    SuspenseLearn.vue 这是学习Suspense的页面

    <template>
      <div>
       <Suspense>
          <template #default>
            <div>
              <async-component></async-component>
            </div>
          </template>
          <template #fallback>
            <h1>Loading...</h1>
          </template>
       </Suspense>
      </div>
    </template>
    <script lang="ts">
    import { defineComponent } from 'vue';
    import AsyncComponent from '@/components/AsyncComponent.vue'
    export default defineComponent({
      name: 'Suspense',
      components: {
        AsyncComponent
      },
      setup() {
        return {
        }
      }
    });
    </script>
    

    效果

    上述就会在异步组件未加载完毕前,展示 Loading... 的效果

    参考

    vue3-doc-async-components

    相关文章

      网友评论

          本文标题:Vue3 内置组件Suspense

          本文链接:https://www.haomeiwen.com/subject/wwlxultx.html