国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

一文掌握在Vue3中書寫TSX的使用方法

瀏覽:184日期:2022-06-09 16:17:35
目錄
  • 插件安裝與文件配置
  • tsx語法格式
  • tsx語法注意事項

在vue2的時候就已經可以使用 jsx 語法,但是不是很友好,寫起來是一件很痛苦的事情,所以你很少見到有人會在vue2中書寫 jsx 語法,官方也不建議我們在vue2中進行書寫 jsx 的代碼風格:

但隨著vue3版本的到來,對typescript的支持度越來越高,tsx語法也被大部分人越來越接收,所以很多項目都是搭配 Vue3 + TS 進行的,所以在vue3項目中懂得如何書寫 tsx 風格的代碼,對于代碼擴展學習還是有必要的。接下來將詳細介紹使用vite構建工具創建vue3項目的tsx具體使用:

插件安裝與文件配置

終端執行如下命令進行相關插件的安裝:

npm install @vitejs/plugin-vue-jsx -D

安裝完成之后需要對配置文件 vite.config.ts 進行相關配置,如下:

import { defineConfig } from "vite"import vue from "@vitejs/plugin-vue"import vueJsx from "@vitejs/plugin-vue-jsx"http:// https://vitejs.dev/config/export default defineConfig({  plugins: [vue(),vueJsx()],})

tsx語法格式

在vue3中創建后綴名為 .tsx 后綴的文件,其使用方法有如下三種方式,如果是學過React的朋友不難發現,vue3的一些語法是越來越像react了,這樣的好處也是降低了學習react的成本。

返回渲染函數

使用optionsApi方法

使用setup函數模式

tsx語法注意事項

在vue3中書寫tsx語法的時候,有一些vue自帶指令是不能使用的,如下進行簡單的介紹:

map代替v-for:在tsx語法中不能使用v-for指令,需要使用map,這一點與react極其相似

import { defineComponent,ref } from "vue";export default defineComponent({  setup(){    const flag = ref(false)    const data = [      {name:"1"},      {name:"2"},      {name:"3"},      {name:"4"},    ]    return () => (<>      <div v-if={flag.value}>張三</div>      {data.map((item)=>{return <div>{item.name}</div>      })}    </>)  }})

{}代替v-bind:在tsx語法中通過{}來代替v-bind的效果,如下:

props與emit的使用: 使用tsx語法時也可以使用vue的props與emit語法,如下:

在子組件定義props數據,如下:

import { defineComponent,ref } from "vue";interface Props {  name?:string}export default defineComponent({  props:{    name:String  },  emits:["on-click"],  setup(props:Props){    const flag = ref(false)    const data = [      {name:"1"},      {name:"2"},      {name:"3"},      {name:"4"},    ]    return () => (<>      <div>props:{props?.name}</div>      <hr />      <div v-if={flag.value}>張三</div>      {data.map((item)=>{return <div class={item.name}>{item.name}</div>      })}    </>)  }})import { defineComponent,ref } from "vue";interface Props {  name?:string}export default defineComponent({  props:{    name:String  },  emits:["on-click"],  setup(props:Props){    const flag = ref(false)    const data = [      {name:"1"},      {name:"2"},      {name:"3"},      {name:"4"},    ]    return () => (<>      <div>props:{props?.name}</div>      <hr />      <div v-if={flag.value}>張三</div>      {data.map((item)=>{return <div class={item.name}>{item.name}</div>      })}    </>)  }})

在父組件通過props傳遞數據,進行父向子傳值,如下:

<template>  <test name="張三" /></template>

接下來開始使用emit函數實現子向父傳值:

v-model的使用

到此這篇關于一文掌握在Vue3中書寫TSX的方法的文章就介紹到這了,更多相關vue3 TSX內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: JavaScript
主站蜘蛛池模板: 韩国精品一区视频在线播放 | 可以看毛片的网址 | 国产在视频线精品视频二代 | 国产成人免费在线 | cao草棚视频网址成人 | 成人免费手机在线看网站 | 欧美三级欧美成人高清www | 一个人看的www片免费视频中文 | 亚洲日本一区二区三区 | 亚洲人成亚洲精品 | 国产精品久久久久久吹潮 | 欧美一级视频 | 成人午夜看片在线观看 | 怡红院成人在线 | 中国日本高清免费视频网 | 国产日韩精品视频一区二区三区 | 欧美一区精品二区三区 | 亚洲欧美日本韩国综合在线观看 | 99免费在线播放99久久免费 | 全免费a级毛片免费毛视频 全午夜免费一级毛片 | 欧美日韩一区二区中文字幕视频 | 国产手机在线国内精品 | 欧美性群另类交 | 国产成人在线视频免费观看 | 精品欧美一区二区精品久久 | 一级毛片不卡片免费观看 | 久久久久国产成人精品 | 国产成人精品免费视频大全可播放的 | 亚洲最大激情中文字幕 | 欧洲一级视频 | 天天鲁天天爱天天鲁天天 | 大看蕉a在线观看 | 99国产国人青青视频在线观看 | 国产夫妻视频 | 国产激情久久久久影 | 国产欧美日韩成人 | 欧美一级欧美三级在线观看 | 欧美野外性k8播放性迷宫 | 久久久久国产精品免费网站 | 亚洲爆爽| 美女张开腿让男人桶爽动漫视频 |