美文网首页react & vue & angular
vue3 进阶版 (持续更新中...)

vue3 进阶版 (持续更新中...)

作者: e只咸鱼 | 来源:发表于2022-05-19 14:19 被阅读0次

导读

vue3官网地址 https://v3.cn.vuejs.org/api/application-config.html#warnhandler

一.应用配置

1.errorHandle 与 warnHandler

errorHandle 官网上说 : 指定一个处理函数,来处理组件渲染函数和侦听器执行期间抛出的未捕获错误。这个处理函数被调用时,可获取错误信息和相应的应用实例。

可以理解为开启了 errorHandle 输出的错误信息都会统一在errorHandler 的回调函数err 拿到 可以统一对错误进行一个处理

同理 warnHandler 也是一样

main中

import { createApp } from 'vue';
import App from './App.vue';

// 应用配置
const app = createApp(App);
app.config.errorHandler = (err, vm, info) => {
  console.log(err); //err 报错信息
  console.log(vm); //Proxy
  console.log(info); //info` 是 Vue 特定的错误信息,比如错误所在的生命周期钩子
};

app.config.warnHandler = function (msg, vm, trace) {
  console.log(msg); //msg 警告信息
  console.log(vm); //Proxy
  console.log(trace); //`trace` 是组件的继承关系追踪
};

2.globalProperties 全局属性

  • 类似于vue2中的 this.+ 我们挂载的属性名

vue2 main中

Vue.prototype.$Name = '帅哥'

页面中:

let name = this.$Name   //帅哥

vue3 main中

import { createApp } from 'vue';
import App from './App.vue';

// 应用配置
const app = createApp(App);
app.config.globalProperties.$Name = '大神';
app.mount('#app');

页面中:

<script>
import { getCurrentInstance } from 'vue';
export default {
  setup() {
    // 获取当前实例
    const app = getCurrentInstance();
    const name =  app.appContext.config.globalProperties.$Name //'大神'

    return {
      name,
    };
  },
};
</script>

3.optionMergeStrategies 合并策略

官网写的有些不是太好理解 可以理解为自定义一个合并的策略 也就是写一个规则 那么就会遵照这个规则执行合并!!!
手写个案例试试看

main 在main中写一个合并的规则

const app = Vue.createApp({})
//合并custom的规则
app.config.optionMergeStrategies.custom = (toVal, fromVal) => {
  console.log('父实例的值 + ', toVal, '||' + '子实例的值 + ', fromVal);
  return toVal || fromVal;
};

上面这个规则就是说 合并custom 如果父实例有custom 那么就返回父实例的custom 如果父实例没有custom 就返回子实例custom

  • 做一下验证

main (在main中混入custom 为'goodbye!‘)

app.mixin({
  custom: 'goodbye!',
});

HelloWorld页面定义 custom属性为‘hello‘

export default {
  name: 'HelloWorld',
  custom: 'hello',
  created() {
    console.log(this.$options.custom) // goodbye!
  },
};

结果就是 HelloWorld页面 created生命周期 输出 goodbye!

最后,让我们尝试将策略更改为优先返回子实例的值

main中

//合并custom的规则
app.config.optionMergeStrategies.custom = (toVal, fromVal) => {
  console.log('父实例的值 + ', toVal, '||' + '子实例的值 + ', fromVal);
  //return toVal || fromVal; //原先的
  return  fromVal || toVal ; //修改后
};

结果就是 HelloWorld页面 created生命周期 输出 hello!

  • 最后 人家官网也说了不足之处 大家了解这个知识点就好
image.png

二.应用Api

三.全局Api

四.选项

五.实例property

六.实例方法

七.指令

八.特殊attribute

九.内置组件

十.响应式Api

十一.组合式Api

十二.单文件组件

相关文章

网友评论

    本文标题:vue3 进阶版 (持续更新中...)

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