三个男躁一个女,国精产品一区一手机的秘密,麦子交换系列最经典十句话,欧美 国产 综合 欧美 视频

    <style id="lzkmc"></style>
    <p id="lzkmc"><li id="lzkmc"></li></p>

      <cite id="lzkmc"></cite>
      登錄注冊寫文章
      首頁下載APP會員IT技術

      將React項目代碼轉成Vue3時最容易踩坑的地方

      River_何

      將React項目代碼轉成Vue3時最容易踩坑的地方

      一、簡述

      前段時間將我的開源項目visualization-collection進行了重構,該項目目前有2.6k的star數,有很多的做Vue開發的同學問有沒有Vue版本,所以就對著之前React版本的重新開發并發布了一個Vue版本的,對于Vue我也是現學現用,在開發過程中也遇到很多阻礙和坑,并且將容易踩坑的地方及解決辦法都記錄下來,今天在這里進行一個技術分享。

      二、踩坑分享

      1. style樣式中不能使用:global,否則運行會報錯(找問題調試半天)。

      2. 父組件的樣式會影響子組件中最外層第一個元素的樣式(該元素的class與父組件中的class名稱一樣時),即使兩個組件的style標簽中都加了scoped,解決辦法就是在最外層再套一層div或者改用不一樣的class名。

      3. 當組件中props參數使用默認值時,不能直接在組件中元素的style中直接使用,這樣樣式直接無效,解決辦法就是將元素所需的style對象用computed方法返回。
        比如:

      interface SwitchProps {
          width?: number;
          height?: number;
      }
      
      const {
          width = 90,
          height = 40,
      } = defineProps<SwitchProps>();
      
      <template>
          <div :style="{ width: `${width}px`, height: `${height}px` }" />
      </template>
      

      需改為

      import { computed } from "vue";
      
      interface SwitchProps {
          width?: number;
          height?: number;
      }
      
      const {
          width = 90,
          height = 40,
      } = defineProps<SwitchProps>();
      
      const containerStyle = computed(()=>{
        return { width: `${width}px`, height: `${height}px` }
      });
      
      <template>
          <div :style="containerStyle" />
      </template>
      
      1. 類型為boolean的且不是必傳的props屬性值,在使用時且沒有傳值時,拿到的值一直是false,并不是和react中一樣為undefined,所以不能寫是否等于undefined來處理業務邏輯。

      2. 如果使用了echarts庫,那么在拿到echarts.init()后的對象后一定要用markRaw轉一下,將echarts圖表標記為不可被轉為代理,否則會導致如果echarts的配置中的tooltip.trigger為"axis"時,tooltip無法顯示,且tooltip.valueFormatter也不會執行。

      import { markRaw } from "vue";
      chartInstance.value = markRaw(echarts.init(chartRef.value, undefined, { renderer: "canvas" }));
      
      1. vite.config.ts配置文件中的默認的publicDir屬性值為"public", 之前如果要引入public中的文件,在react中寫的 <video><source src="public/dance.mp4"></source></video>,而在vue中則必須寫成<video><source src="/dance.mp4"></source></video>,這樣在本地運行時會找public中的dance.mp4文件,但是使用vite打包后,public中的文件會被復制到outDir的根目錄中,所以如果還是和react中一樣的寫法就不對了,打包時會報錯,因為打包后的根目錄中沒有public文件夾。

      2. watch(xxx, ()=>{ if(boxRef){} }, { immediate: true })中的回調函數在執行第一次時是在onMounted之前執行,也就意味著這和React中的useEffect不一樣,在回調函數中是拿不到boxRef實例的,解決辦法就是寫成watch([xxx, boxRef], ()=>{ if(boxRef){} }, { immediate: true })

      三、結語

      對于一個Vue新手,如果我的解決辦法有問題或大家有更好的解決辦法,可以進行留言討論,再次感謝各位的支持。
      最后用一道我自己在學習Vue時琢磨出的一個關于Vue生命周期與API執行順序的面試題,搞懂了這個,那Vue執行順序相關的題就不在話下了:


      問:該組件第一次渲染后console.log打印什么?點擊一次按鈕后打印什么?

      更多個人文章

      1. hashHistory和browserHistory的區別
      2. 全網最全Autoit3基礎教程及實戰案例
      3. 面試秘籍之排序算法
      4. 一款將打包后的Chrome插件自動化加載到瀏覽器的webpack插件
      最后編輯于 :2023.07.14 14:53:28
      ?著作權歸作者所有,轉載或內容合作請聯系作者
      平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

      推薦閱讀更多精彩內容

      • react學習心得(react基礎+react全家桶+antd-ui知識)講解
        title: react 第一次實戰項目知識點記錄 基礎知識點項目地址:https://github.com/ya...
        wenzi8705_GG閱讀 1,796評論 0贊 1
      • 基于Vue+Vuex+Vue-Router+Axios+Mint-ui+Node+Expres...
        第一步:安裝Node 1、打開NodeJS的官網,下載和自己系統相配的NodeJS的安裝程序,包括32位還是64位...
        子瞻是也閱讀 846評論 0贊 3
      • react學習筆記(react基礎+react全家桶+ant-ui知識)基礎篇
        title: react 第一次實戰項目知識點記錄 基礎知識點項目地址:https://github.com/ya...
        送你一堆小心心閱讀 6,282評論 9贊 78
      • react hooks/vue2/vue3 + qiankun微服務踩坑記
        一、開始前來點前奏 話說iframe是最好的微服務解決方案,不過它有一些無法解決的致命弱點,即使可以解決的問題體驗...
        eks閱讀 2,377評論 2贊 1
      • react開發框架搭建方案一條龍create-react-app2.x + mobx + ax...
        寫在前面: 以下creact-react-app以下簡稱CRA 本文均使用yard進行包安裝及項目啟動和打包,喜歡...
        子白青墨閱讀 3,539評論 0贊 22
      評論0
      贊1
      1贊2贊
      贊賞
      手機看全文

      感谢您访问我们的网站,您可能还对以下资源感兴趣:

      三个男躁一个女
      久久久久久久精品99国产国产精 荡货夹的这么紧欠c调教视频 成人做爰黄aa片啪啪声 少妇高潮久久久久久精品一
      主站蜘蛛池模板: 苍山县| 西昌市| 宜丰县| 桂林市| 镇坪县| 东莞市| 甘洛县| 洪湖市| 新丰县| 分宜县| 兰考县| 南雄市| 松阳县| 南澳县| 庐江县| 彰武县| 古田县| 阿拉善盟| 瓦房店市| 务川| 邢台县| 温泉县| 思南县| 淮阳县| 金坛市| 行唐县| 都江堰市| 逊克县| 伽师县| 天门市| 石楼县| 巴南区| 柳河县| 蓬安县| 延吉市| 黄平县| 宝山区| 韩城市| 东至县| 德庆县| 攀枝花市|
          <blockquote id="xxavp"><p id="xxavp"></p></blockquote>

            • <sub id="xxavp"></sub>
              <p id="xxavp"></p>