16.vue3新特性
vue3新寫法
vue2的很多寫法都以類為主 函式 methods mounted computed watch 所有的方式都歸類寫
vue3的很多寫法主要以函式為主 函式式寫法是一種方式歸類在一個函式中 然後統一return出來
新寫法之vuex
引入vuex不同於vue2 的Vue.use(vuex) 到處是以export default Vuex.Store({})
vue3使用的寫法為函式式寫法 即 先引入一個函式
import { createStore } from 'vuex'
然後export default createStore({}) 剩下的裡邊
state:狀態 mutations:靜態轉化 actions:動態過程 都沒有變化
新寫法之app掛載
從vue中引入createApp import { createApp } from 'vue'
新寫法中 app引入vuex route都使用函式式方式 createApp(App).use(store).use(route).mount('#app') 這樣非常簡便引入vuex route
全域性掛載指令可以用createApp(App).directive("name",(el)=>{})
全域性掛載vant可以在.mount("#app") 前面.use(vant) element-ui是一樣的
新寫法之路由
同樣route使用函式式寫法 import { createRouter,createWebHistory } from 'vue-router'
const router = createRouter({routes,history:createWebHistory()}) createWebHistory指代到底使用hash還是web寫法
routes 寫法和vue2沒有什麼區別 唯一的區別是在重定向的時候可以使用
redirect:{name:上方定義的name}
新寫法的route-link tag被遺棄 現在使用
<router-link to="/about" custom v-slot="{ navigate }">
<li @click="navigate" role="link">About Us</li>
</router-link>
v-slot 指代插槽
router的攔截器 router.beforeEach(()=>{}) 使用方式沒有改變
新寫法之過濾器
vue2中的過濾器一般使用 {{ name | 過濾器 }} 現在被廢棄 直接使用 {{ 過濾器( name ) }} 傳入那麼引數進行過濾
新寫法之reactive
新寫法徹底改變了生命週期 等一些列狀態由原來的類寫法換成函式式寫法
統一寫在setup() 函式裡面 在元件被掛載的時候會被執行這個函式
定義狀態 import { reactive } const obj = reactive({name:"fu"}) return {reactive} 使用模板時 obj.name
定義函式 const 函式 = ()=>{} return {obj,函式} 使用模板時 直接寫函式就可以了 函式內部使用狀態 直接obj.name即可
reative 中不能放入 字串
新寫法之ref
ref在vue2中沒有什麼存在感 但是vue3中有很多好用的地方
因為reactive不能直接使用字串 我們可以使用 const myref = ref("xxx") 直接使用就可以直接呼叫myref.value
ref還保留了原本ref訪問dom
新寫法之生命週期
vue3的所有生命週期都可以寫在setup()中 並在生命週期函式前面加on 比如 onmounted oncreated
新寫法之計算屬性
vue3中的計算屬性需要引入 import computed from ’vue‘ 使用時 const xxx = computed((res)=>{})
新寫法之watch watch(()=>obj.xxx,fn) 只要xxx發生改變就會呼叫函式