0

0

如何在Vue3中使用JSX?

WBOY

WBOY

发布时间:2023-05-09 21:09:19

|

2850人浏览过

|

来源于亿速云

转载

    1. Vue3 中 JSX 的基本应用

    使用 .jsx 格式文件和 defineComponentdefineComponent 可传入 setup 函数 或 组件的配置插值使用单括号 {}

    1.1 在 .vue 文件中使用 jsx

    // 父
     
    
     
    
     
    // JSXDemo1.vue
     
    

    1.2 .jsx文件格式

    // 父组件
     
    import { defineComponent, ref } from 'vue'
    import JSXChild from './JSXChild.jsx'
     
    export default defineComponent(() => { // 传入 setup 函数
      const countRef = ref(300)
     
      const render = () => {
        return <>
          

    DEMO2--{countRef.value}

    } return render }) // 子组件 JSXChild.jsx import { defineComponent } from 'vue' export default defineComponent({ // 传入组件配置 props: ['a'], setup (props) { const render = () => { return <>

    child {props.a}

    } return render } })

    2. JSX 和 template 的区别

    • 语法上有很大区别

    • JSX 本质就是 js 代码,可以使用 js 的任何能力

      立即学习前端免费学习笔记(深入)”;

    • template 只能嵌入简单的 js 表达式,其他需要指令,如 v-if

    • JSX 已经成为 ES 规范,template 还是 Vue 自家规范

    • 本质是相同的:

    • 都会被编译为 js 代码(render 函数)

    2.1 插值

    • template 使用双括号 {{ }}

    • jsx 使用单括号 { }

      Shopxp网上购物系统
      Shopxp网上购物系统

      Shopxp购物系统历经多年的考验,并在推出shopxp免费购物系统下载之后,收到用户反馈的各种安全、漏洞、BUG、使用问题进行多次修补,已经从成熟迈向经典,再好的系统也会有问题,在完善的系统也从在安全漏洞,该系统完全开源可编辑,当您下载这套商城系统之后,可以结合自身的技术情况,进行开发完善,当然您如果有更好的建议可从官方网站提交给我们。Shopxp网上购物系统完整可用,无任何收费项目。该系统经过

      下载
    // template
     
    
     
    // jsx
     
    const render = () => {
        return <>
            

    child {props.a}

    }

    2.2 自定义组件

    • template 组件名使用时可改变大小写或是驼峰,jsx 不可更改

    • 引入动态参数,template使用冒号+参数名(:msg='msg'),jsx 不需要冒号

    // template
     
    
     
    
     
    // jsx 组件名称不可变,要和引入名字保持一致
     
    import { defineComponent, ref } from 'vue'
    import JSXChild from './JSXChild.jsx'
     
    export default defineComponent(() => {
      const countRef = ref(300)
     
      const render = () => {
        return <>
          

    DEMO2--{countRef.value}

    } return render })

    2.3 属性和事件

    template 区分属性和事件的写法,jsx 不区分
    // jsx 属性和事件的写法一样
     
    import { defineComponent, ref } from 'vue'
    import JSXChild from './JSXChild.jsx'
     
    export default defineComponent(() => {
      const countRef = ref(300)
     
      function onChange () {
        console.log('onChange')
      }
      const render = () => {
        return <>
          

    DEMO2--{countRef.value}

    } return render })

    2.4 条件和循环 

    条件 template 使用 v-if 指令,jsx 在表达式中使用 && (类似 if( a && b))
    // template v-if
     
    
    
     
    // jsx &&符号判断
     
    import { defineComponent, ref } from 'vue'
    import JSXChild from './JSXChild.jsx'
     
    export default defineComponent(() => {
      const flagRef = ref(true)
     
      function changeFlagRef () {
        flagRef.value = !flagRef.value
      }
     
      const render = () => {
        return <>
          

    DEMO2--{flagRef.value.toString()}

    {flagRef.value && } } return render })
     循环 template 使用 v-for 指令,jsx 使用数组的 .map 函数
    // template v-for
     
    
    
     
    // jsx 数组 .map 函数
     
    import { defineComponent, reactive } from 'vue'
     
    export default defineComponent(() => {
      const state = reactive({
        list: ['a1', 'b1', 'c1']
      })
     
      const render = () => {
        return <>
          
      {state.list.map(item =>
    • {item}
    • )}
    } return render })

    3. JSX 和 slot (体会 JSX 的优越性)

    • slot 是 Vue 发明的概念,为了完善 template 的能力

    • slot 一直是 Vue 初学者的“噩梦”,特别是:作用域 slot

    • 但使用 JSX 将很容易理解,因为 JSX 本质就是 js

    相关专题

    更多
    if什么意思
    if什么意思

    if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

    710

    2023.08.22

    golang map内存释放
    golang map内存释放

    本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

    73

    2025.09.05

    golang map相关教程
    golang map相关教程

    本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

    25

    2025.11.16

    golang map原理
    golang map原理

    本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

    36

    2025.11.17

    java判断map相关教程
    java判断map相关教程

    本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

    31

    2025.11.27

    js正则表达式
    js正则表达式

    php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

    506

    2023.06.20

    js获取当前时间
    js获取当前时间

    JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

    240

    2023.07.28

    js 字符串转数组
    js 字符串转数组

    js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

    248

    2023.08.03

    桌面文件位置介绍
    桌面文件位置介绍

    本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

    0

    2025.12.30

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Vue3.x 工具篇--十天技能课堂
    Vue3.x 工具篇--十天技能课堂

    共26课时 | 1.4万人学习

    Vue3.x 核心篇--十天技能课堂
    Vue3.x 核心篇--十天技能课堂

    共30课时 | 1.4万人学习

    Vue3.x新特性篇--十天基础课堂
    Vue3.x新特性篇--十天基础课堂

    共20课时 | 1.1万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号