Vue3中使用jsx/tsx的教程詳解
首先,恭喜一下 React,再過 4 個月,就達成了兩年無更新記錄
反觀隔壁的 Vue,穩(wěn)定迭代更新
之前寫 React 的時候,最喜歡的是 JSX/TSX 語法,把 HTML 組件當做 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 語法靈活創(chuàng)建組件。
最常見的例子是,當我有一個數(shù)據(jù)表格,需要自定義字段的組件時,得用 h()
函數(shù)來創(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 原來是支持 JSX & TSX 的!
官方文檔: vuejs.org/guide/extras/render-function.html#jsx-tsx
在 Vue3 中集成 JSX & TSX 相對簡單,安裝插件:
npm install @vue/babel-plugin-jsx -D
將 babel 文件中配置:
{ "plugins": ["@vue/babel-plugin-jsx"] }
如果項目用 TypeScript,則在 tsconfig.json
中配置:
{ "compilerOptions": { "jsx": "preserve" } }
注意:這里以 babel 舉例,如果是其他工具鏈,比如 Vite、Nuxt 的話,請參考對應文檔。
集成之后,上述的 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)十個年頭,這么些年來,Vue 始終穩(wěn)步前進。
從降低開發(fā)成本和心智負擔方面來說,Vue 算得上優(yōu)秀。
先后推出的 Composition API、Setup、支持 TSX 語法等,真正的理解、賦能開發(fā)者。
值得一提的是,國內(nèi)的開發(fā)者確實偏愛 Vue,不論是 Star 人數(shù)、Issue 數(shù)量 和 Pull Request 數(shù)量,都是遙遙領先:
數(shù)據(jù)來源:ossinsight.io/analyze/vuejs/core#people
到此這篇關于Vue3中使用jsx/tsx的教程詳解的文章就介紹到這了,更多相關Vue3使用jsx/tsx內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決vue安裝less報錯Failed to compile with 1 errors的問題
這篇文章主要介紹了解決vue安裝less報錯Failed to compile with 1 errors的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10vue項目使用axios發(fā)送請求讓ajax請求頭部攜帶cookie的方法
今天小編就為大家分享一篇vue項目使用axios發(fā)送請求讓ajax請求頭部攜帶cookie的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09Vite結(jié)合Vue刪除指定環(huán)境的console.log問題
這篇文章主要介紹了Vite結(jié)合Vue刪除指定環(huán)境的console.log問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03