Vue3中使用jsx/tsx的教程詳解
首先,恭喜一下 React,再過 4 個(gè)月,就達(dá)成了兩年無(wú)更新記錄

反觀隔壁的 Vue,穩(wěn)定迭代更新

之前寫 React 的時(shí)候,最喜歡的是 JSX/TSX 語(yǔ)法,把 HTML 組件當(dāng)做 JavaScript/TypeScript 代碼片段處理
const App: React.FC<AppProps> = ({ title }) => {
const [count, setCount] = useState<number>(0);
// ??????
return (
<div>
<h1>{title}</h1>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
轉(zhuǎn)戰(zhàn) Vue 之后,最痛苦的是沒辦法利用 TSX 語(yǔ)法靈活創(chuàng)建組件。
最常見的例子是,當(dāng)我有一個(gè)數(shù)據(jù)表格,需要自定義字段的組件時(shí),得用 h() 函數(shù)來(lái)創(chuàng)建:
<script lang="ts" setup>
//...
const createColumns = () => {
return [
{
title: 'Action',
key: 'actions',
render (row) {
/* ?????? */
return h(
NButton,
{
strong: true,
tertiary: true,
size: 'small',
onClick: () => play(row)
},
{ default: () => 'Play' }
)
}
}
]
}
//...
</script>
h() 麻煩,低頻使用情況下,每次都得查一遍文檔。
最近發(fā)現(xiàn) Vue3 原來(lái)是支持 JSX & TSX 的!
官方文檔: vuejs.org/guide/extras/render-function.html#jsx-tsx
在 Vue3 中集成 JSX & TSX 相對(duì)簡(jiǎn)單,安裝插件:
npm install @vue/babel-plugin-jsx -D
將 babel 文件中配置:
{
"plugins": ["@vue/babel-plugin-jsx"]
}
如果項(xiàng)目用 TypeScript,則在 tsconfig.json 中配置:
{
"compilerOptions": {
"jsx": "preserve"
}
}
注意:這里以 babel 舉例,如果是其他工具鏈,比如 Vite、Nuxt 的話,請(qǐng)參考對(duì)應(yīng)文檔。
集成之后,上述的 h() 終于可以扔掉,換回熟悉的 JSX & TSX:
<script lang="ts" setup>
//...
const createColumns = () => {
return [
{
title: 'Action',
key: 'actions',
render (row) {
/* ?????? */
return (
<NButton
strong={true}
tertiary={true}
size="small"
onClick={() => play(row)}>
Play
</NButton>
)
}
}
]
}
//...
</script>
Vue3,你是懂框架的,妥妥的真香。
Vue 的誕生,已經(jīng)十個(gè)年頭,這么些年來(lái),Vue 始終穩(wěn)步前進(jìn)。
從降低開發(fā)成本和心智負(fù)擔(dān)方面來(lái)說,Vue 算得上優(yōu)秀。
先后推出的 Composition API、Setup、支持 TSX 語(yǔ)法等,真正的理解、賦能開發(fā)者。
值得一提的是,國(guó)內(nèi)的開發(fā)者確實(shí)偏愛 Vue,不論是 Star 人數(shù)、Issue 數(shù)量 和 Pull Request 數(shù)量,都是遙遙領(lǐng)先:

數(shù)據(jù)來(lái)源:ossinsight.io/analyze/vuejs/core#people
到此這篇關(guān)于Vue3中使用jsx/tsx的教程詳解的文章就介紹到這了,更多相關(guān)Vue3使用jsx/tsx內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決vue安裝less報(bào)錯(cuò)Failed to compile with 1 errors的問題
這篇文章主要介紹了解決vue安裝less報(bào)錯(cuò)Failed to compile with 1 errors的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-10-10
vue項(xiàng)目使用axios發(fā)送請(qǐng)求讓ajax請(qǐng)求頭部攜帶cookie的方法
今天小編就為大家分享一篇vue項(xiàng)目使用axios發(fā)送請(qǐng)求讓ajax請(qǐng)求頭部攜帶cookie的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-09-09
初識(shí)簡(jiǎn)單卻不失優(yōu)雅的Vue.js
這篇文章主要為大家介紹了簡(jiǎn)單卻不失優(yōu)雅、小巧而不乏大匠的Vue.js,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
Vite結(jié)合Vue刪除指定環(huán)境的console.log問題
這篇文章主要介紹了Vite結(jié)合Vue刪除指定環(huán)境的console.log問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03

