vue3 進階版 (持續(xù)更新中...)

導(dǎo)讀

vue3官網(wǎng)地址 https://v3.cn.vuejs.org/api/application-config.html#warnhandler

一.應(yīng)用配置

1.errorHandle 與 warnHandler

errorHandle 官網(wǎng)上說 : 指定一個處理函數(shù),來處理組件渲染函數(shù)和偵聽器執(zhí)行期間拋出的未捕獲錯誤。這個處理函數(shù)被調(diào)用時,可獲取錯誤信息和相應(yīng)的應(yīng)用實例。

可以理解為開啟了 errorHandle 輸出的錯誤信息都會統(tǒng)一在errorHandler 的回調(diào)函數(shù)err 拿到 可以統(tǒng)一對錯誤進行一個處理

同理 warnHandler 也是一樣

main中

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

// 應(yīng)用配置
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` 是組件的繼承關(guān)系追蹤
};

2.globalProperties 全局屬性

  • 類似于vue2中的 this.+ 我們掛載的屬性名

vue2 main中

Vue.prototype.$Name = '帥哥'

頁面中:

let name = this.$Name   //帥哥

vue3 main中

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

// 應(yīng)用配置
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 合并策略

官網(wǎng)寫的有些不是太好理解 可以理解為自定義一個合并的策略 也就是寫一個規(guī)則 那么就會遵照這個規(guī)則執(zhí)行合并!!!
手寫個案例試試看

main 在main中寫一個合并的規(guī)則

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

上面這個規(guī)則就是說 合并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!
  },
};

結(jié)果就是 HelloWorld頁面 created生命周期 輸出 goodbye!

最后,讓我們嘗試將策略更改為優(yōu)先返回子實例的值

main中

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

結(jié)果就是 HelloWorld頁面 created生命周期 輸出 hello!

  • 最后 人家官網(wǎng)也說了不足之處 大家了解這個知識點就好
image.png

二.應(yīng)用Api

三.全局Api

四.選項

五.實例property

六.實例方法

七.指令

八.特殊attribute

九.內(nèi)置組件

十.響應(yīng)式Api

十一.組合式Api

十二.單文件組件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容