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

Vue 3.0中jsx語法的使用

瀏覽:64日期:2022-10-29 13:46:19

Vue 3.0 正式發布了,喜大普奔😁。新的語法又要學習一陣陣,不過需要在生產環境下大面積使用,可能需要等到它的周邊工具:vuex,vue-router 等等全部升級完畢。

Vue 3.0 中尤大使用的了新的編譯工具 vite,革了 webpack 的命😂。嘗試看了下文檔,發現支持 jsx 語法,由于這段時間都是在使用 react 來開發項目,jsx 完全不同的體驗,更加的純粹與靈活。

項目創建

npm init vite-app vite-vuecd vite-vuenpm installnpm run dev

我們發現創建的目錄解構很簡單

Vue 3.0中jsx語法的使用

使用 JSX

Vue 3.0 直接支持 jsx 語法,新建 demo.jsx

export default function JsxTemp() { return <div> <h3>jsx</h3> </div>}

引入到 App.vue 中可以完整顯示

Vue 3.0中jsx語法的使用

再嘗試綁定數據

import { ref } from ’vue’export default function JsxTemp() { const state = ref(0) const onClick = () => { state.value++; console.log(state.value) } return <div> <h3>state: {state.value}</h3> <button onClick={onClick}>點擊</button> </div>}

我們發現沒有像我們想的那樣 state 數一直自增😅

Vue 3.0中jsx語法的使用

這是因為我們在 Vue 3.0 中需要使用 defineComponent 包裹來使其變成一個雙向綁定數據的組件參數 為 setup function | object

import { defineComponent, ref } from ’vue’export default defineComponent(() => { const state = ref(0) const onClick = () => { state.value++; console.log(state.value) } return () => ( <div> <h3>state: {state.value}</h3> <button onClick={onClick}>點擊</button> </div> )})

可以看到現在是實時點擊實現自增效果

Vue 3.0中jsx語法的使用

組件通信

組件間傳值通信該怎么來實現呢😮

我們需要改用對象的方式來傳入通信數據

App.vue<JsxTemp site='imondo.cn' @onGet='onGet' />export default { ... methods: { onGet(e) { console.log(’emit:’, e) } }}...export default defineComponent({ props: { site: String }, setup({ site }) { const state = ref(0) const onClick = () => { state.value++; console.log(state.value) context.emit(’onGet’, ’Mondo’); } return () => ( <div> <h1>props: {site}</h1> <h3>state: {state.value}</h3> <button onClick={onClick}>點擊</button> </div> ) }})

實現效果

Vue 3.0中jsx語法的使用

總結

我們嘗試了在 Vue 3.0 中如何使用 jsx ,這有助于我們在項目中更靈活的公用我們組件,由此也可以區分我們在項目中使用的方式

無狀態組件 我們完全可以使用純函數來展示 有狀態組件 存在邏輯與數據綁定的組件則需要使用 Vue 3.0 提供的一系列組件 API

以上就是Vue 3.0 中 jsx 語法使用的詳細內容,更多關于Vue 3.0 jsx 語法的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
国产综合久久一区二区三区