Vue3中進行頁面局部刷新組件刷新的操作方法
前言
今天在給vue3的項目中進行數(shù)據(jù)綁定的時候,發(fā)現(xiàn)我刪除一條記錄頁面不會自動刷新,還是保留原來的狀態(tài)
但是數(shù)據(jù)已經傳送給后端,后端也完成了響應的處理
這個時候我想到了局部刷新,我想vue3是vue2的升級版,那么部分語法應該是支持的才對,經過嘗試不是很完美
沒有達到自己想要的情況,期間還很多報錯
開始操作
vue3的生命周期和vue2的生命周期是完全不一樣的
vue2和vue3的區(qū)別
我這里就簡單介紹一下2者的區(qū)別
Vue2與Vue3 最大的區(qū)別:Vue2使用選項類型API(Options API)對比Vue3合成型API(Composition API)
舊的選項型API在代碼里分割了不同的屬性: data,computed屬性,methods,等等。新的合成型API能讓我們用方法(function)來分割,相比于舊的API使用屬性來分組,這樣代碼會更加簡便和整潔。
vue2
export default {
props: {
title: String,
},
data() {
return {
username: "",
password: "",
};
},
methods: {
login() {
//登錄axios請求處理
},
},
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()), //計算屬性
});
//方法
const login = () => {
//登錄axios請求處理
};
return {
login,
state,
};
},
};Vue2和Vue3的鉤子函數(shù)生命周期對照
Vue2--------------vue3 beforeCreate -> setup() created -> setup() beforeMount -> onBeforeMount mounted -> onMounted beforeUpdate -> onBeforeUpdate updated -> onUpdated beforeDestroy -> onBeforeUnmount destroyed -> onUnmounted activated -> onActivated deactivated -> onDeactivated
setup() :開始創(chuàng)建組件之前,在beforeCreate和created之前執(zhí)行。創(chuàng)建的是data和method
onBeforeMount() : 組件掛載到節(jié)點上之前執(zhí)行的函數(shù)。
onMounted() : 組件掛載完成后執(zhí)行的函數(shù)。
onBeforeUpdate(): 組件更新之前執(zhí)行的函數(shù)。
onUpdated(): 組件更新完成之后執(zhí)行的函數(shù)。
onBeforeUnmount(): 組件卸載之前執(zhí)行的函數(shù)。
onUnmounted(): 組件卸載完成后執(zhí)行的函數(shù)
若組件被包含,則多出下面兩個鉤子函數(shù)。
onActivated(): 被包含在中的組件,會多出兩個生命周期鉤子函數(shù)。被激活時執(zhí)行 。
onDeactivated(): 比如從 A組件,切換到 B 組件,A 組件消失時執(zhí)行。
步入正題,解決今天的問題
我們了解過了二者的區(qū)別,那我們開始解決問題,百度搜素出來的解決方案大部分都是vue2的今天咱們用vue3的方法來實現(xiàn)局部組件刷新
代碼
首先我們要對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中進行頁面局部刷新組件刷新的操作方法的文章就介紹到這了,更多相關Vue3頁面局部刷新內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Vue3在css中使用v-bind綁定js/ts變量(在scss和less中使用方式)
v-bind是Vue.js中的一個核心指令,用于在Vue組件或DOM元素上綁定數(shù)據(jù)屬性,下面這篇文章主要給大家介紹了關于Vue3在css中使用v-bind綁定js/ts變量的相關資料,也可以在scss和less中使用方式,需要的朋友可以參考下2024-04-04
Element-Plus表格實現(xiàn)Table自定義合并行數(shù)據(jù)
在開發(fā)項目中,我們時常會用到表格,許多需求可能會要求自定義特定的行或列,下面就跟隨小編一起來學習一下在實際開發(fā)中如何實現(xiàn)這一要求吧2024-12-12
vue中提示$index is not defined錯誤的解決方式
這篇文章主要介紹了vue中提示$index is not defined錯誤的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
vscode中prettier和eslint換行縮進沖突的問題
這篇文章主要介紹了vscode中prettier和eslint換行縮進沖突的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10
vue3+vite+SQL.js如何讀取db3文件數(shù)據(jù)
這篇文章主要介紹了vue3+vite+SQL.js如何讀取db3文件數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05
vue中使用echarts并根據(jù)選擇條件動態(tài)展示echarts圖表
雖然老早就看過很多echarts的例子, 但自己接觸的項目中一直都沒有真正用到過,直到最近才開始真正使用,下面這篇文章主要給大家介紹了關于vue中使用echarts并根據(jù)選擇條件動態(tài)展示echarts圖表的相關資料,需要的朋友可以參考下2023-12-12

