vue3新特性及api介紹(二)

2021-10-05 19:56:12 字數 1842 閱讀 6000

接上文的介紹。vue3新特性位址戳我  vue3api介紹位址戳我

7.provide/inject

用法和之前類似,不過只能在setup函式內使用

const prokey = symbol("provide");

provide(prokey, "aaa");

inject(prokey, "123");

inject的第二個引數是預設值

我們可以傳入乙個ref值,這樣的話注入的屬性也是響應式的屬性,可以被追蹤(之前2.x版本的provide/inject是非響應式的)

const prokey = symbol("provide");

provide(prokey, ref("aaa"));

inject(prokey, ref("123"));

需要注意的是,provide的key預設是symbol型別,如果要傳入其他型別,需要通過泛型顯示指定

const prokey = 1;

provide(prokey, ref("aaa"));

inject(prokey, ref("123"));

8.ref

在vue3中,我們宣告乙個ref的同名響應式屬性並在setup中返回,這樣我們就能這個響應式屬性就是實際的dom或者元件.注意要取值時是myref.value。

因為ref屬性是響應式的,所以我們可以通過函式組合傳遞到其他函式

const myref = ref(null);

return ;

aaa

setup函式可以返回render方法或者用jsx形式來寫,ref使用方式如下:

setup() )

// with jsx

return () => }

如果是在v-for中使用ref,那麼ref是作為函式形式被動態賦值給我們初始化的乙個響應式陣列裡

">

}setup() )

return

}

9。toref

如果乙個reactive屬性的某個屬性值要傳遞給其他組合函式,最好將這個屬性轉為ref屬性

const state = reactive();

const statevalue = toref(state, "value");

轉換之後的statevalue與原來的state.value還保持同步

10.unref

如果引數是ref屬性,則返回它的值,否則返回本身

const statevalue=ref('111')

const value=unref(statevalue)

11.torefs

把乙個reactive物件一次性轉換成ref屬性,

const state = reactive()

const stateasrefs = torefs(state)

/*type of stateasrefs:

*/

轉換前後的兩個屬性保持同步

12.props

vue3的props會作為setup的預設引數傳遞進來

setup(props)
13.isref/isproxy/isreactive.isreadonly

是否是ref建立的屬性/是否是reactive或者readonly建立的屬性/是否是reactive建立的屬性/是否是readonly建立的屬性

後續待補充

vue3的新特性及api

1.響應式原理 vue2的響應式原理是利用object.defineproperty而vue3則是利用proxy。proxy的效能和功能比object.defineproperty強很多 這裡的強是指api支援更好原始碼層次 可以看一下這邊文章proxy 與object.defineproperty...

vue3新特性學習小結

組合式api,主要目的就是為了解決以前那些邏輯較為複雜的大元件,各個邏輯點 相互分散,需要來來回回 跳轉 檢視,這種極不方便的操作。1.以前寫在data computed watch provide inject等標籤中的 都可以提取到乙個setup標籤中來使用,使該邏輯 相關的變數 函式處理 監聽...

vue3帶來的新特性 亮點

vue3在效能方面比vue2快了2倍。vue3中的核心api都支援了tree shaking,這些api都是通過包引入的方式而不是直接在例項化時就注入,只會對使用到的功能或特性進行打包 按需打包 這意味著更多的功能和更小的體積。vue2中,我們一般會採用mixin來復用邏輯 用倒是挺好用的,不過也存...