接上文的介紹。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來復用邏輯 用倒是挺好用的,不過也存...