vue3深入學習 nextTick和historyApiFallback
1、nextTick
官方解釋:將回調推遲到下一個 DOM 更新周期之後執行。在更改瞭一些數據以等待 DOM 更新後立即使用它。
比如我們有下面的需求:
- 點擊一個按鈕,我們會修改在h2中顯示的message;
- message被修改後,獲取h2的高度;
<template> <div> <h3 class="title" ref="title">{{ message }}</h3> <button @click="handleClick">添加內容</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>
可以看到,上面每次打印的都是上一次元素內容的高度
實現上面的案例我們有三種方式:
- 方式一:在點擊按鈕後立即獲取到h2的高度(錯誤的做法)
- 方式二:在updated生命周期函數中獲取h2的高度(但是其他數據更新,也會執行該操作)
<template> <div> <h3 class="title" ref="title">{{ message }}</h3> <button @click="handleClick">添加內容</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函數;
nextTick是如何做到的呢?
<template> <div> <h3 class="title" ref="title">{{ message }}</h3> <button @click="handleClick">添加內容</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是開發中一個非常常見的屬性,它主要的作用是解決SPA頁面在路由跳轉之後,進行頁面刷新時,返回404的錯誤。
2.boolean值:默認是false
- 如果設置為true,那麼在刷新時,返回404錯誤時,會自動返回 index.html 的內容;
3.object類型的值,可以配置rewrites屬性:
- 可以配置from來匹配路徑,決定要跳轉到哪一個頁面;
4.事實上devServer中實現historyApiFallback功能是通過connect-history-api-fallback庫的:
可以查看文檔
代碼在vue-cli腳手架項目的node_modules/@vue/cli-service/lib/commands/serve.js
中:
const server = new WebpackDevServer(compiler, Object.assign({ historyApiFallback: { disableDotRule: true } }))
現在已經是vite打包工具瞭,上面是webpack的配置
自己配置可以在項目根目錄下創建一個vue.config.js
文件,在這個文件中進行配置:
module.exports = { configureWebpack: { devServer: { historyApiFallback: true } } }
到此這篇關於vue3深入學習 nextTick和historyApiFallback的文章就介紹到這瞭,更多相關vue3 nextTick和historyApiFallback內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Vue中的nextTick作用和幾個簡單的使用場景
- Vue.nextTick純幹貨使用方法詳解
- 談談Vue中的nextTick
- vue 實現動態設置元素的高度
- Vue3.2單文件組件setup的語法糖與新特性總結