踩坑记6 vue3、生命周期钩子、vue-devtools beta
2021.7.28
坑17(vue3、生命周期鉤子、導航守衛、頁面刷新):發現頁面刷新后在導航守衛afterEach()中設置的頭部的面包屑、標題、標簽頁調整函數updateHeader()并未觸發,即刷新頁面無法觸發afterEach(),也就無法正確顯示刷新后頁面的頭部。
解決方法:在生命周期鉤子onMounted()中調用updateHeader(),該鉤子會在頁面刷新后觸發。以上導航守衛和生命周期鉤子都寫在setup()中。
注:vue3中,生命周期鉤子在setup()中使用,并接收一個回調函數作為參數。詳細可見參考文章或官方文檔。
setup(){function?updateHeader(){// 調整頁面頭部的面包屑、標題、標簽頁}// 頁面刷新時不會調用router.afterEach((to,from)=>{updateHeader()})//?頁面刷新時會調用onMounted(()=>{updateHeader()})}參考: 如何在Vue3中使用生命周期函數 - 知乎 (zhihu.com)
官方文檔: 生命周期鉤子 | Vue3中文文檔 - vuejs (vue3js.cn)和 組合式 API | Vue3中文文檔 - vuejs (vue3js.cn)
坑18(vue3、vue-devtools beta):安裝vue-devtools到Chrome/Edge瀏覽器(Firefox可以直接下github的xpi文件安裝)。(成功可行的方法請看最后一段,及2021.8.13更新)
失敗經歷:
1、github下載的壓縮包,main分支,yarn install成功,yarn run build / npm run build 均失敗。
2、新建一空文件夾,命令行npm install vue-devtools,將node_modules\vue-devtools\vender文件作為擴展程序載入到瀏覽器Chrome/Edge,權限全開;vender下manifest.json文件中"persistent"屬性置為true。啟用后效果:進入vue寫的網站(參考 哪些網站使用了vue?_冰雪為融的博客-CSDN博客_vue網站,ps:csdn新版博客主頁也是vue寫的,但舊版不是),可以點亮圖標,但自己運行的網站始終為灰色,提示Vue.js not detected。
原因排查:下載版本不對,vue3對應的vue-devtools應該是6.0.0以上的beta版本。
繼續嘗試:
github下載最新的beta版安裝包,devtools-6.0.0-beta.15,yarn install,yarn build,報錯(原因見及解決方法見后附的2021.8.13更新):
lerna ERR! yarn run build exited 1 in '@vue-devtools/shell-chrome'
lerna ERR! yarn run build stdout:
$ rm -rf ./build && cross-env NODE_ENV=production webpack --progress
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
lerna ERR! yarn run build stderr:
warning package.json: No license field
'rm' �����?����?���??���?�������
���������?���
error Command failed with exit code 1.
lerna ERR! yarn run build exited 1 in '@vue-devtools/shell-chrome'
lerna WARN complete Waiting for 1 child process to exit. CTRL-C to exit immediately.
error Command failed with exit code 1.
刪除yarn.lock,yarn init,yarn install,yarn build,依然失敗。
若成功,取packages\shell-chrome文件作為擴展程序載入到瀏覽器Chrome/Edge。
(下載很慢可以考慮換源,參考 Electron安裝失敗_mocoe的專欄-CSDN博客)
注:之前下過一個6.0.0-beta.6版本沒報錯,成功生成了shell-chrome文件,但運行報錯backend.js:3253 TypeError: api.on.visitComponentTree is not a function,暫未發現有阻礙/影響運行。
最后成功的方法: Download Vue.js Devtools 6.0.0 beta 15 CRX File for Chrome - Crx4Chrome或 Vue.js Devtools_6.0.0beta15_chrome擴展插件下載_極簡插件 (zzzmh.cn)直接下載擴展程序.crx文件安裝。連接是目前的最新版beta-6.0.0.15。
2021.8.13更新(成功bulid及使用): 收到留言:"devtools這個報錯需要把 @vue\devtools和@vue-devtools\shell-chrome的build命令里面的rm -rf改成rimraf,windows下不能使用rm好像" 查了一下相關資料,認為可行,值得一試。windows確實不能使用rm,參考:'rm' 不是內部或外部命令,也不是可運行的程序 或批處理文件。_今天不學習~明天變垃圾~-CSDN博客。rimraf參考: npm包--rimraf_丫丫的博客-CSDN博客_rimraf安裝 嘗試:(版本是devtools-6.0.0-beta.15) 首先安裝rimraf,npm install rimraf --save-dev,報錯:npm ERR! RequestError: read ECONNRESET。查看源地址,npm config get registry,看到當前源地址是https://registry.npmjs.org/。設置源地址為淘寶鏡像,npm config set registry https://registry.npm.taobao.org/。再次嘗試安裝rimraf,npm install rimraf --save-dev,成功。 之后,搜索rm -rf,可以找到一下兩個位置下的package.json: packages\shell-chrome\package.json packages\shell-electron\package.json 備份后,修改替換其中的rm -rf為rimraf,下方代碼以shell-chrome包中的package.json為例: //packages\shell-chrome\package.json //修改后 "scripts": {"build": "rimraf ./build && cross-env NODE_ENV=production webpack --progress" }, //修改前 "scripts": {"build": "rm -rf ./build && cross-env NODE_ENV=production webpack --progress" }, 最后,yarn install, yarn build,成功!!! 取packages\shell-chrome文件作為擴展程序載入到瀏覽器Chrome/Edge,可以使用。by 莫得感情踩坑機(限定)
總結
以上是生活随笔為你收集整理的踩坑记6 vue3、生命周期钩子、vue-devtools beta的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言入门篇 | 循环语句和用法(详解版
- 下一篇: 2022 年诺贝尔化学奖公布,有学者两度