其他分享
首页 > 其他分享> > 浅学Vue3Day3 一些Composition api、Teleport、Suspense、全局api的转移

浅学Vue3Day3 一些Composition api、Teleport、Suspense、全局api的转移

作者:互联网

内容


shallowReactive 和 shallowRef

readonly 和 shallowReadonly

toRaw 和 markRaw

customRef

<template>
  <input type="text" v-model="keyword">
  <h3>{{keyword}}</h3>
</template>
<script>
  import { ref, customRef} from 'vue'
  export default {
    setup() {
      // 自定义一个myRef
      function myRef(value) {
        let timer
        return customRef((track,trigger) => {
          // customRef接收一个函数为参数,需要return出去一个getter和setter
          return {
            get() {
              track();  // 这个value值是需要被追踪的,这里不写的话之后更改value页面也不会同步改变
              return value;
            },
            set(newValue) {
              value = newValue;
              trigger();	// 通知vue去重新解析模版
            }
          }
        })
      }
      let keyword = myRef('hello');
      return {
        keyword
      }
    }
  }
</script>

provide 和 inject

请添加图片描述

  1. 祖组件中:
 setup() {
   ......
   let person = reactive({name:'AIpoem',age: 19});
   provide('p',person);
 }
  1. 孙组件中:
setup() {
   ......
  let person = inject('p');
  return {person};
}

新组件

Fragment

Teleport

  <teleport to="body"> <!--这里的to后接指定位置-->
    <div v-if="isShow" class="mask">
      <div class="dialog">
        <h3>我是一个弹窗/h3>
        <button @click="isShow = false">关闭弹窗</button>
      </div>
    </div>
  </teleport>

Suspense

  1. 异步引入组件
import {defineAsyncComponent} from 'vue'
const Child = defineAsyncComponent(() => import('./components/Child.vue'))
  1. 使用Suspense包裹组件,并配置好defaultfallback
<template>
  <div class="app">
    <h3>我是App组件</h3>
    <Suspense>
      <template #default>
        <child></child>     
      </template>
      <template #fallback>
        <h3>加载中...</h3>  // 异步组件未渲染出来时显示的内容
      </template>
    </Suspense>
  </div>
</template>

全局api的转移

vue3.0将全局的api,即Vue.xxx调整到应用实例(app)上

2.x全局API3.0实例API
Vue.config.xxxxVue.config.xxxx
Vue.config.productionTip移除
Vue.componentapp.component
Vue.directiveapp.directive
Vue.mixinapp.mixin
Vue.useapp.use
Vue.prototypeapp.config.globalProperties

其他改变


标签:Teleport,return,对象,Vue3Day3,value,响应,api,组件
来源: https://blog.csdn.net/gegegegege12/article/details/122676698