最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3中進(jìn)行頁(yè)面局部刷新組件刷新的操作方法

 更新時(shí)間:2022年12月20日 16:11:41   作者:執(zhí)著1111  
這篇文章主要介紹了Vue3中進(jìn)行頁(yè)面局部刷新組件刷新的操作方法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言

今天在給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ò)嘗試不是很完美

沒有達(dá)到自己想要的情況,期間還很多報(bào)錯(cuò)

開始操作

vue3的生命周期和vue2的生命周期是完全不一樣的

vue2和vue3的區(qū)別

我這里就簡(jiǎn)單介紹一下2者的區(qū)別

Vue2與Vue3 最大的區(qū)別:Vue2使用選項(xiàng)類型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() :開始創(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í)行。

步入正題,解決今天的問題

我們了解過(guò)了二者的區(qū)別,那我們開始解決問題,百度搜素出來(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è)面局部刷新,到此問題解決

到此這篇關(guān)于Vue3中進(jìn)行頁(yè)面局部刷新組件刷新的操作方法的文章就介紹到這了,更多相關(guān)Vue3頁(yè)面局部刷新內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue router 配置路由的方法

    vue router 配置路由的方法

    這篇文章主要介紹了vue router 配置路由的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • vue-resource攔截器設(shè)置頭信息的實(shí)例

    vue-resource攔截器設(shè)置頭信息的實(shí)例

    下面小編就為大家?guī)?lái)一篇vue-resource攔截器設(shè)置頭信息的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • Vue3在css中使用v-bind綁定js/ts變量(在scss和less中使用方式)

    Vue3在css中使用v-bind綁定js/ts變量(在scss和less中使用方式)

    v-bind是Vue.js中的一個(gè)核心指令,用于在Vue組件或DOM元素上綁定數(shù)據(jù)屬性,下面這篇文章主要給大家介紹了關(guān)于Vue3在css中使用v-bind綁定js/ts變量的相關(guān)資料,也可以在scss和less中使用方式,需要的朋友可以參考下
    2024-04-04
  • Element-Plus表格實(shí)現(xiàn)Table自定義合并行數(shù)據(jù)

    Element-Plus表格實(shí)現(xiàn)Table自定義合并行數(shù)據(jù)

    在開發(fā)項(xiàng)目中,我們時(shí)常會(huì)用到表格,許多需求可能會(huì)要求自定義特定的行或列,下面就跟隨小編一起來(lái)學(xué)習(xí)一下在實(shí)際開發(fā)中如何實(shí)現(xiàn)這一要求吧
    2024-12-12
  • vue中提示$index is not defined錯(cuò)誤的解決方式

    vue中提示$index is not defined錯(cuò)誤的解決方式

    這篇文章主要介紹了vue中提示$index is not defined錯(cuò)誤的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • vue使用axios時(shí)關(guān)于this的指向問題詳解

    vue使用axios時(shí)關(guān)于this的指向問題詳解

    最近在學(xué)習(xí)使用vue+axios,在使用中發(fā)現(xiàn)了一個(gè)問題,下面總結(jié)分享給大家,這篇文章主要給大家介紹了關(guān)于vue使用axios時(shí)this的指向問題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-12-12
  • 在uni-app中使用vant組件的方法

    在uni-app中使用vant組件的方法

    最近在做uni-app的時(shí)候需要用到vant組件,在網(wǎng)上看到了很多的使用vant組件的方法,但是講解的大多繁瑣,或者無(wú)法使用,現(xiàn)把最新,最實(shí)用的vant組件的使用方法分享給大家,需要的朋友可以參考下
    2023-02-02
  • vscode中prettier和eslint換行縮進(jìn)沖突的問題

    vscode中prettier和eslint換行縮進(jìn)沖突的問題

    這篇文章主要介紹了vscode中prettier和eslint換行縮進(jìn)沖突的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue3+vite+SQL.js如何讀取db3文件數(shù)據(jù)

    vue3+vite+SQL.js如何讀取db3文件數(shù)據(jù)

    這篇文章主要介紹了vue3+vite+SQL.js如何讀取db3文件數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • vue中使用echarts并根據(jù)選擇條件動(dòng)態(tài)展示echarts圖表

    vue中使用echarts并根據(jù)選擇條件動(dòng)態(tài)展示echarts圖表

    雖然老早就看過(guò)很多echarts的例子, 但自己接觸的項(xiàng)目中一直都沒有真正用到過(guò),直到最近才開始真正使用,下面這篇文章主要給大家介紹了關(guān)于vue中使用echarts并根據(jù)選擇條件動(dòng)態(tài)展示echarts圖表的相關(guān)資料,需要的朋友可以參考下
    2023-12-12

最新評(píng)論

子长县| 芜湖县| 修水县| 新津县| 板桥市| 通道| 涟水县| 鲁山县| 临汾市| 玛纳斯县| 大石桥市| 新丰县| 高清| 克东县| 登封市| 新绛县| 澄江县| 商丘市| 涟水县| 天祝| 荥经县| 雷波县| 五常市| 太湖县| 迭部县| 涞源县| 正安县| 抚松县| 漳浦县| 阿尔山市| 玉溪市| 开化县| 泸定县| 凌源市| 民勤县| 五常市| 汝南县| 太仓市| 留坝县| 阿拉善左旗| 子长县|