Vue3中進(jìn)行頁(yè)面局部刷新組件刷新的操作方法
前言
今天在給vue3的項(xiàng)目中進(jìn)行數(shù)據(jù)綁定的時(shí)候,發(fā)現(xiàn)我刪除一條記錄頁(yè)面不會(huì)自動(dòng)刷新,還是保留原來(lái)的狀態(tài)
但是數(shù)據(jù)已經(jīng)傳送給后端,后端也完成了響應(yīng)的處理
這個(gè)時(shí)候我想到了局部刷新,我想vue3是vue2的升級(jí)版,那么部分語(yǔ)法應(yīng)該是支持的才對(duì),經(jīng)過(guò)嘗試不是很完美
沒(méi)有達(dá)到自己想要的情況,期間還很多報(bào)錯(cuò)
開(kāi)始操作
vue3的生命周期和vue2的生命周期是完全不一樣的
vue2和vue3的區(qū)別
我這里就簡(jiǎn)單介紹一下2者的區(qū)別
Vue2與Vue3 最大的區(qū)別:Vue2使用選項(xiàng)類(lèi)型API(Options API)對(duì)比Vue3合成型API(Composition API)
舊的選項(xiàng)型API在代碼里分割了不同的屬性: data,computed屬性,methods,等等。新的合成型API能讓我們用方法(function)來(lái)分割,相比于舊的API使用屬性來(lái)分組,這樣代碼會(huì)更加簡(jiǎn)便和整潔
。
vue2
export default { props: { title: String, }, data() { return { username: "", password: "", }; }, methods: { login() { //登錄axios請(qǐng)求處理 }, }, components: { buttonComponent: btnComponent, }, computed: { fullName() { return this.firstName + " " + this.lastName; }, }, };
vue3
export default { props: { title: String, }, setup() { const state = reactive({ //數(shù)據(jù) username: "", password: "", lowerCaseUsername: computed(() => state.username.toLowerCase()), //計(jì)算屬性 }); //方法 const login = () => { //登錄axios請(qǐng)求處理 }; return { login, state, }; }, };
Vue2和Vue3的鉤子函數(shù)生命周期對(duì)照
Vue2--------------vue3 beforeCreate -> setup() created -> setup() beforeMount -> onBeforeMount mounted -> onMounted beforeUpdate -> onBeforeUpdate updated -> onUpdated beforeDestroy -> onBeforeUnmount destroyed -> onUnmounted activated -> onActivated deactivated -> onDeactivated
setup() :開(kāi)始創(chuàng)建組件之前,在beforeCreate和created之前執(zhí)行。創(chuàng)建的是data和method
onBeforeMount() : 組件掛載到節(jié)點(diǎn)上之前執(zhí)行的函數(shù)。
onMounted() : 組件掛載完成后執(zhí)行的函數(shù)。
onBeforeUpdate(): 組件更新之前執(zhí)行的函數(shù)。
onUpdated(): 組件更新完成之后執(zhí)行的函數(shù)。
onBeforeUnmount(): 組件卸載之前執(zhí)行的函數(shù)。
onUnmounted(): 組件卸載完成后執(zhí)行的函數(shù)
若組件被包含,則多出下面兩個(gè)鉤子函數(shù)。
onActivated(): 被包含在中的組件,會(huì)多出兩個(gè)生命周期鉤子函數(shù)。被激活時(shí)執(zhí)行 。
onDeactivated(): 比如從 A組件,切換到 B 組件,A 組件消失時(shí)執(zhí)行。
步入正題,解決今天的問(wèn)題
我們了解過(guò)了二者的區(qū)別,那我們開(kāi)始解決問(wèn)題,百度搜素出來(lái)的解決方案大部分都是vue2的今天咱們用vue3的方法來(lái)實(shí)現(xiàn)局部組件刷新
代碼
首先我們要對(duì)app.vue進(jìn)行修改
代碼:
<template> <div id="app"> <nav-View v-show="login" /> <router-view v-if="isRouterAlive" /> <!-- 進(jìn)行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>
接下來(lái)就是子組件(分頁(yè)的調(diào)用)
代碼:
<template> <div> <!-- input框輸入值,點(diǎn)擊按鈕,看值會(huì)不會(huì)清空 --> <input type="text"> </div> <button @click="refresh">頁(yè)面刷新</button> </template> <script> import { inject } from "vue"; export default{ setup() { const refresh = inject("reload"); //在方法體中的調(diào)用方法 // refresh(); return { refresh, }; }, }; </script>
完成了我們想要的頁(yè)面局部刷新,到此問(wèn)題解決
到此這篇關(guān)于Vue3中進(jìn)行頁(yè)面局部刷新組件刷新的操作方法的文章就介紹到這了,更多相關(guān)Vue3頁(yè)面局部刷新內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue組件強(qiáng)制刷新的4種方案
- Vue?Router解決多路由復(fù)用同一組件頁(yè)面不刷新問(wèn)題(場(chǎng)景分析)
- vue組件值變化但不刷新強(qiáng)制組件刷新的問(wèn)題
- Vue實(shí)現(xiàn)父子組件頁(yè)面刷新的幾種常用方法
- vue打開(kāi)子組件彈窗都刷新功能的實(shí)現(xiàn)
- vue相同路由跳轉(zhuǎn)強(qiáng)制刷新該路由組件操作
- 解決vue更新路由router-view復(fù)用組件內(nèi)容不刷新的問(wèn)題
- vue強(qiáng)制刷新組件的方法示例
- Vue 實(shí)現(xiàn)手動(dòng)刷新組件的方法
- 使用Vue開(kāi)發(fā)動(dòng)態(tài)刷新Echarts組件的教程詳解
- vue強(qiáng)制刷新組件的三種方法
相關(guān)文章
vue?url跳轉(zhuǎn)解析和參數(shù)編碼介紹
這篇文章主要介紹了vue?url跳轉(zhuǎn)解析和參數(shù)編碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03VUE2響應(yīng)式原理使用Object.defineProperty缺點(diǎn)
這篇文章主要為大家介紹了VUE2響應(yīng)式原理使用Object.defineProperty缺點(diǎn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08vue3如何優(yōu)雅的實(shí)現(xiàn)移動(dòng)端登錄注冊(cè)模塊
這篇文章主要給大家介紹了關(guān)于vue3如何優(yōu)雅的實(shí)現(xiàn)移動(dòng)端登錄注冊(cè)模塊的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03詳解Jest結(jié)合Vue-test-utils使用的初步實(shí)踐
這篇文章主要介紹了詳解Jest結(jié)合Vue-test-utils使用的初步實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06如何通過(guò)Vue自帶服務(wù)器實(shí)現(xiàn)Ajax請(qǐng)求跨域(vue-cli)
從A頁(yè)面訪(fǎng)問(wèn)到B頁(yè)面,并且要獲取到B頁(yè)面上的數(shù)據(jù),而兩個(gè)頁(yè)面所在的端口、協(xié)議和域名中哪怕有一個(gè)不對(duì)等,那么這種行為就叫跨域,這篇文章給大家介紹如何通過(guò)Vue自帶服務(wù)器實(shí)現(xiàn)Ajax請(qǐng)求跨域(vue-cli),感興趣的朋友一起看看吧2023-10-10Vue?設(shè)置圖片不轉(zhuǎn)為base64的方式
這篇文章主要介紹了Vue實(shí)現(xiàn)設(shè)置圖片不轉(zhuǎn)為base64的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02如何在vue3中同時(shí)使用tsx與setup語(yǔ)法糖
這篇文章主要介紹了如何在vue3中同時(shí)使用tsx與setup語(yǔ)法糖,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09Vue+better-scroll 實(shí)現(xiàn)通訊錄字母索引的示例代碼
通訊錄字母索引是常用的一種功能,本文主要介紹了Vue+better-scroll 實(shí)現(xiàn)通訊錄字母索引,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06