首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >vue3配置jsx

vue3配置jsx

作者头像
阿超
发布于 2022-08-21 14:42:42
发布于 2022-08-21 14:42:42
7940
举报
文章被收录于专栏:快乐阿超快乐阿超

首先按照官方文档创建项目:

代码语言:javascript
复制
npm init vite hello-vue3 -- --template vue # 或 yarn create vite hello-vue3 --template vue

然后我们安装jsx插件:https://github.com/vuejs/babel-plugin-jsx

代码语言:javascript
复制
npm install @vue/babel-plugin-jsx -D

然后配置vite.config.js

代码语言:javascript
复制
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vuejsx from "@vue/babel-plugin-jsx"
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue(), vuejsx({})],
  esbuild: {
    jsxFactory: 'h',
    jsxFragment: 'Fragment',
    jsxInject: "import { h } from 'vue';"
  }
})

编写代码:

代码语言:javascript
复制
<script lang="tsx">
interface Props {
  msg: string;
}
import { ref, Ref, } from 'vue'
export default {
  props: {
    msg: {
      type: String
    }
  },
  setup(props: Props, { expose }) {
    const count: Ref<number> = ref(0)
    const increment = (event: MouseEvent) => ++count.value
    expose({
      increment
    })
    return () => (
      <div>
        <div>{props.msg}</div>
        <p>You clicked {count.value} times</p>
        <button onClick={increment}>Click me</button>
      </div>
    )
  }
}
</script>

<style scoped>
a {
  color: #42b983;
}
</style>

查看效果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档