关于 vue3 api 的一些使用记录

133 阅读2分钟

1. vue3 中的app实例对象,

app.mount()

只能调用一次

2. app.provide()方法

// 全局app对象
app.provide("key值" , "value值")

// 在其他组件中使用: 
import { inject } from 'vue' 
export default { 
    setup() { 
        console.log(inject('key值')) 
    } 
}

3. app.component()

// 注册一个全局组件 
app.component('组件名称', { /* ... */ })

// 获取一个全局组件
app.component("组件名称")

4. app.directive()

// 自定义全局指令
// 方式1 对象形式
app.directive('指令名称', { /* 自定义指令钩子 */ })
// 方式2 函数形式
app.directive('指令名称', () => { /* ... */ })

// 获取一个全局指令
app.directive("指令名称")

5. app.use()

使用一个插件

import 插件 from "某一个文件或位置"
app.use(插件)

如何制作一个插件: 插件制作

6. app.config

整个Vue3应用程序实例对象app暴露的一个config对象, 里面有很多的配置属性

app.config.errorHandler

app 运行时 错误捕获处理函数

app.config.warnHandler

app 运行时 警告捕获处理函数

app.config.performance = true

开发模式下, 在浏览器 监测组件 加载 渲染定性能

app.config.compilerOptions

运行时 编译器的 配置选项

app.config.globalPropertied

app全局实例对象属性配置

app.config.optionMergeStrategied ---> obj

自定义组件选项的合并策略

7. setup(props , context) 注意事项

  1. setup 函数内 不存在 this
  2. 可以在选项式API中访问组合式API暴露的值, 反反过来不行
  3. setup函数的第一个参数是 props
    注意: 响应式对象 中的 属性, 并非响应式
    可通过如下方式, 将属性也变成响应式: 
    
    import { toRefs, toRef } from 'vue'
    // 将 `响应式对象` 转为一个其中全是 ref 的对象,然后解构 
    const { 某个属性 } = toRefs(响应式对象)
    
    // 或者,将 `响应式对象` 的单个属性转为一个 ref 
    const 某个属性 = toRef(响应式对象, 'title')
    
    属性 props 同理
  1. setup函数的第二个参数 是一个 setup上下文对象
export default { 
    setup(props, context) {
        // 该上下文对象 context 是 非响应式的
        
        // 透传 Attributes(非响应式的对象,等价于 $attrs)
        console.log(context.attrs) 

        // 插槽(非响应式的对象,等价于 $slots) 
        console.log(context.slots) 

        // 触发事件(函数,等价于 $emit) 
        console.log(context.emit) 

        // 暴露公共属性(函数)
        // 也就是说可以只暴露部分数据给 父组件的 引用
        console.log(context.expose) 
        context.expose({
            a,
            b
        })
    } 
}
  1. setup 函数最后也可以不返回数据, 而返回一个渲染函数
import {h} from "vue"
.....
setup(){
    ........
    return () => h('div', count.value)
}

8. ref() 函数

  1. ref(基本类型 比如6) ---> {value: 6}
  2. ref(引用类型 比如{...}) ----> 内部将 调用 reactive({...})

9. reactive()

深层次的响应式, 若想要避免 深层次的 响应式转换, 可使用 shallowReactive()

10. readonly()

将数据变成只读的 不可修改

11. watch() 和 watchEffect()

可参考我的另一篇教程 # vue3 知识点 和 对比 部分总结, 更新中。。。。。

12. isRef() unRef() toRef() toRefs() isProxy() isReactive() isReadonly()

这些就是工具函数 看名称应该能知道是什么意思的