vue3深入學(xué)習(xí)?nextTick和historyApiFallback
1、nextTick
官方解釋:將回調(diào)推遲到下一個(gè) DOM 更新周期之后執(zhí)行。在更改了一些數(shù)據(jù)以等待 DOM 更新后立即使用它。
比如我們有下面的需求:
- 點(diǎn)擊一個(gè)按鈕,我們會(huì)修改在h2中顯示的message;
- message被修改后,獲取h2的高度;
<template> <div> <h3 class="title" ref="title">{{ message }}</h3> <button @click="handleClick">添加內(nèi)容</button> </div> </template> <script setup> import { ref } from 'vue' const message = ref('') const title = ref(null) const handleClick = () => { message.value += 'NextTick!' console.log(title.value.offsetHeight) } </script> <style scoped> .title { width: 100px; word-break: break-all; } </style>
可以看到,上面每次打印的都是上一次元素內(nèi)容的高度
實(shí)現(xiàn)上面的案例我們有三種方式:
- 方式一:在點(diǎn)擊按鈕后立即獲取到h2的高度(錯(cuò)誤的做法)
- 方式二:在updated生命周期函數(shù)中獲取h2的高度(但是其他數(shù)據(jù)更新,也會(huì)執(zhí)行該操作)
<template> <div> <h3 class="title" ref="title">{{ message }}</h3> <button @click="handleClick">添加內(nèi)容</button> </div> </template> <script setup> import { ref, onUpdated } from 'vue' const message = ref('') const title = ref(null) const handleClick = () => { message.value += 'NextTick!' } onUpdated(() => { console.log(title.value.offsetHeight) }) </script> <style scoped> .title { width: 100px; word-break: break-all; } </style>
方式三: 使用nextTick函數(shù);
nextTick是如何做到的呢?
<template> <div> <h3 class="title" ref="title">{{ message }}</h3> <button @click="handleClick">添加內(nèi)容</button> </div> </template> <script setup> import { ref, nextTick } from 'vue' const message = ref('') const title = ref(null) const handleClick = () => { message.value += 'NextTick!' // 更新 DOM nextTick(() => { console.log(title.value.offsetHeight) }) } </script> <style scoped> .title { width: 100px; word-break: break-all; } </style>
2、historyApiFallback
1.historyApiFallback是開發(fā)中一個(gè)非常常見的屬性,它主要的作用是解決SPA頁面在路由跳轉(zhuǎn)之后,進(jìn)行頁面刷新時(shí),返回404的錯(cuò)誤。
2.boolean值:默認(rèn)是false
- 如果設(shè)置為true,那么在刷新時(shí),返回404錯(cuò)誤時(shí),會(huì)自動(dòng)返回 index.html 的內(nèi)容;
3.object類型的值,可以配置rewrites屬性:
- 可以配置from來匹配路徑,決定要跳轉(zhuǎn)到哪一個(gè)頁面;
4.事實(shí)上devServer中實(shí)現(xiàn)historyApiFallback功能是通過connect-history-api-fallback庫的:
可以查看文檔
代碼在vue-cli腳手架項(xiàng)目的node_modules/@vue/cli-service/lib/commands/serve.js
中:
const server = new WebpackDevServer(compiler, Object.assign({ historyApiFallback: { disableDotRule: true } }))
現(xiàn)在已經(jīng)是vite打包工具了,上面是webpack的配置
自己配置可以在項(xiàng)目根目錄下創(chuàng)建一個(gè)vue.config.js
文件,在這個(gè)文件中進(jìn)行配置:
module.exports = { configureWebpack: { devServer: { historyApiFallback: true } } }
到此這篇關(guān)于vue3深入學(xué)習(xí) nextTick和historyApiFallback的文章就介紹到這了,更多相關(guān)vue3 nextTick和historyApiFallback內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue3使用hook封裝媒體查詢和事件監(jiān)聽的代碼示例
這篇文章主要給大家詳細(xì)介紹Vue3如何使用hook封裝媒體查詢和事件監(jiān)聽,使得Vue的開發(fā)更加絲滑,文中通過代碼示例給大家介紹的非常詳細(xì),感興趣的同學(xué)跟著小編一起來學(xué)習(xí)吧2023-07-07Vue2.X 通過AJAX動(dòng)態(tài)更新數(shù)據(jù)
這篇文章主要介紹了Vue2.X 通過AJAX動(dòng)態(tài)更新數(shù)據(jù)的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07Vue使用vue-recoure + http-proxy-middleware + vuex配合promise實(shí)現(xiàn)基本
這篇文章主要介紹了Vue使用vue-recoure + http-proxy-middleware + vuex配合promise實(shí)現(xiàn)基本的跨域請(qǐng)求封裝問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10vue自定義table表如何實(shí)現(xiàn)內(nèi)容上下循環(huán)滾動(dòng)
這篇文章主要介紹了vue自定義table表如何實(shí)現(xiàn)內(nèi)容上下循環(huán)滾動(dòng)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10vue?Proxy數(shù)據(jù)代理進(jìn)行校驗(yàn)部分源碼實(shí)例解析
Proxy提供了強(qiáng)大的Javascript元編程,有許多功能,包括運(yùn)算符重載,對(duì)象模擬,簡潔而靈活的API創(chuàng)建,對(duì)象變化事件,甚至Vue 3背后的內(nèi)部響應(yīng)系統(tǒng)提供動(dòng)力,這篇文章主要給大家介紹了關(guān)于vue?Proxy數(shù)據(jù)代理進(jìn)行校驗(yàn)部分源碼解析的相關(guān)資料,需要的朋友可以參考下2022-01-01Vue中圖片上傳組件封裝-antd的a-upload二次封裝的實(shí)例
這篇文章主要介紹了Vue中圖片上傳組件封裝-antd的a-upload二次封裝的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09vue實(shí)現(xiàn)無縫滾動(dòng)的示例詳解
這篇文章主要為大家詳細(xì)介紹了vue非組件如何實(shí)現(xiàn)列表的無縫滾動(dòng)效果,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-09-09