vue3的生命週期和vue2的生命週期是完全不一樣的
我在這裡就簡單介紹一下2者的差異
Vue2與Vue3 最大的差異:Vue2使用選項類型API(Options API)比較Vue3合成型API(Composition API)
#舊的選項型API在程式碼裡分割了不同的屬性: data,computed屬性,methods,等等。新的合成型API能讓我們用方法(function)來分割,相較於舊的API使用屬性來分組,這樣程式碼會更簡單、更整潔
。
export default { props: { title: String, }, data() { return { username: "", password: "", }; }, methods: { login() { //登录axios请求处理 }, }, components: { buttonComponent: btnComponent, }, computed: { fullName() { return this.firstName + " " + this.lastName; }, }, };
export default { props: { title: String, }, setup() { const state = reactive({ //数据 username: "", password: "", lowerCaseUsername: computed(() => state.username.toLowerCase()), //计算属性 }); //方法 const login = () => { //登录axios请求处理 }; return { login, state, }; }, };
Vue2--------------vue3 beforeCreate -> setup() created -> setup() beforeMount -> onBeforeMount mounted -> onMounted beforeUpdate -> onBeforeUpdate updated -> onUpdated beforeDestroy -> onBeforeUnmount destroyed -> onUnmounted activated -> onActivated deactivated -> onDeactivated
setup() :開始建立元件之前,在beforeCreate和created之前執行。建立的是data和method
onBeforeMount() : 元件掛載到節點上之前執行的函數。
onMounted() : 元件掛載完成後執行的函數。
onBeforeUpdate(): 元件更新之前執行的函數。
onUpdated(): 元件更新完成之後執行的函數。
onBeforeUnmount(): 元件卸載之前執行的函數。
onUnmounted(): 元件卸載完成後執行的函數
若元件被包含,則多出下面兩個鉤子函數。
onActivated(): 被包含在中的元件,會多出兩個生命週期鉤子函數。被啟動時執行 。
onDeactivated(): 例如從 A元件,切換到 B 元件,A 元件消失時執行。
首先我們要對app.vue進行修改
程式碼:
<template> <div id="app"> <nav-View v-show="login" /> <router-view v-if="isRouterAlive" /> <!-- 进行v-if判断 --> <foot-View v-show="login" /> </div> </template> <script> import navView from "@/components/navView.vue"; import footView from "@/components/footer.vue"; import { onMounted, ref, watch ,nextTick,provide,} from "vue";//要引入方法 import { useRouter } from "vue-router"; export default { name: "app", components: { navView, footView, }, created() { console.log("123", this.$route.path); }, setup() { // 局部组件刷新 const isRouterAlive = ref(true); const reload = () => { isRouterAlive.value = false; nextTick(() => { isRouterAlive.value = true; }); }; provide("reload", reload); return { isRouterAlive, }; }, watch: { }, }; </script> <style> * { margin: 0px; } #app { font-family: "Avenir", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; } </style>
接下來就是子元件(分頁的呼叫)
程式碼:
<template> <div> <!-- input框输入值,点击按钮,看值会不会清空 --> <input type="text"> </div> <button @click="refresh">页面刷新</button> </template> <script> import { inject } from "vue"; export default{ setup() { const refresh = inject("reload"); //在方法体中的调用方法 // refresh(); return { refresh, }; }, }; </script>
以上是Vue3頁面局部刷新元件的刷新問題怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!