詳解在vue3中使用jsx的配置以及一些小問題
配置
在vue3中使用jsx十分方便,只需要安裝官方的@vitejs/plugin-vue-jsx
插件,在vite.config.ts
中配置
// vite.config.ts import vueJsx from "@vitejs/plugin-vue-jsx"; export default { plugins: [vueJsx()] }
配置了vite.config.ts
后雖然已經(jīng)可以使用jsx,頁面也正常渲染了,但是還是會提示無法使用jsx,此時(shí)還需要在tsconfig.ts
中配置"jsx": "preserve"
屬性,就可以愉快的使用jsx形式來寫vue了。
// tsconfig.ts { "jsx": "preserve", }
模版語法
使用jsx時(shí)setup需要返回一個函數(shù),函數(shù)返回jsx形式。不過使用jsx形式也有不好的地方,在使用數(shù)據(jù)就比較煩,不能像模版中一樣直接使用,需要加上.value
,雖然新的volar插件已經(jīng)會自動添加.value了,但還是很難受,一不小心就會忘記寫。
<script lang="tsx"> import { defineComponent, ref } from "vue"; export default defineComponent({ setup() { const msg = ref("tsx component"); return () => { return <div>{msg.value}</div>; }; }, }); </script>
v-if/v-show
還有不太方便的一個點(diǎn)就是v-if無法使用,jsx中得使用三元表達(dá)式,但是三元感覺看起來不是很舒服
export default defineComponent({ setup() { const msg = ref("tsx component"); const isShow = ref(false); function onClick() { isShow.value = !isShow.value; } return () => { return ( <div> <div>{msg.value}</div> {isShow.value && <div>{isShow.value ? "show" : "hide"}</div>} <el-button onClick={onClick}>onClick</el-button> </div> ); }; }, });
如果直接使用v-if就會報(bào)錯無法讀取未定義的屬性
但是v-show
是可以使用的,但v-if
不行,不知道為什么,可能是直接jsx默認(rèn)推薦使用isShow && <div/>
或者三元的形式吧
<div> <div>{msg.value}</div> {isShow.value && <div>{isShow.value ? "show" : "hide"}</div>} <div v-show={isShow.value}>{isShow.value ? "show" : "hide"}</div> <el-button onClick={onClick}>onClick</el-button> </div>
v-show正確顯示出了show div,dom中也是通過display做的顯影,三元則是創(chuàng)建和銷毀的dom
v-for
就更不用想了,就用map吧,map也挺好用的,不過v-model
還是可以使用的,顯示也正常
export default defineComponent({ setup() { const msg = ref("tsx component"); return () => { return ( <div> <div>{msg.value}</div> <el-input v-model={msg.value} /> </div> ); }; }, });
到此這篇關(guān)于在vue3中使用jsx的配置以及一些小問題的文章就介紹到這了,更多相關(guān)在vue3中使用jsx的配置以及一些小問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue編譯器源碼分析compileToFunctions作用詳解
這篇文章主要為大家介紹了Vue編譯器源碼分析compileToFunctions作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07vue開發(fā)之LogicFlow自定義業(yè)務(wù)節(jié)點(diǎn)
這篇文章主要為大家介紹了vue開發(fā)之LogicFlow自定義業(yè)務(wù)節(jié)點(diǎn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01解決vue2.0 element-ui中el-upload的before-upload方法返回false時(shí)submit(
這篇文章主要介紹了vue2.0 element-ui中el-upload的before-upload方法返回false時(shí)submit()不生效的解決方法,這里需要主要項(xiàng)目中用的element-ui是V1.4.3,感興趣的朋友參考下吧2018-08-08Vue項(xiàng)目中使用better-scroll實(shí)現(xiàn)一個輪播圖自動播放功能
better-scroll是一個非常非常強(qiáng)大的第三方庫 在移動端利用這個庫 不僅可以實(shí)現(xiàn)一個非常類似原生ScrollView的效果 也可以實(shí)現(xiàn)一個輪播圖的效果。這篇文章主要介紹了Vue項(xiàng)目中使用better-scroll實(shí)現(xiàn)一個輪播圖,需要的朋友可以參考下2018-12-12el-form表單el-form-item label不換行問題及解決
這篇文章主要介紹了el-form表單el-form-item label不換行問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10vue組件定義,全局、局部組件,配合模板及動態(tài)組件功能示例
這篇文章主要介紹了vue組件定義,全局、局部組件,配合模板及動態(tài)組件功能,結(jié)合實(shí)例形式分析了vue.js中組件的定義、全局組件、局部組件、配合模板組件及動態(tài)組件的相關(guān)使用方法與操作注意事項(xiàng),需要的朋友可以參考下2019-03-03