位置: IT常识 - 正文

Vue3 使用 JSX(笔记自用)(vue3技巧)

编辑:rootadmin
Vue3 使用 JSX(笔记自用)

目录

1. Vue3 中 JSX 的基本应用

1.1 在 .vue 文件中使用 jsx

1.2 .jsx文件格式

2. JSX 和 template 的区别

2.1 插值

2.2 自定义组件

2.3 属性和事件

2.4 条件和循环 

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


1. Vue3 中 JSX 的基本应用使用 .jsx 格式文件和 defineComponentdefineComponent 可传入 setup 函数 或 组件的配置插值使用单括号 {}1.1 在 .vue 文件中使用 jsx// 父<template> <div class="home"> <JSXDemo1 /> </div></template><script>import JSXDemo1 from '@/components/JSXDemo1.vue'export default { name: 'HomeView', components: { JSXDemo1 }}</script>// JSXDemo1.vue<script>import { ref } from 'vue'export default { setup () { const countRef = ref(200) const render = () => { return <p>DEMO1--{countRef.value}</p> // jsx就是js语法,所以要加 .value } return render }}</script>1.2 .jsx文件格式// 父组件import { defineComponent, ref } from 'vue'import JSXChild from './JSXChild.jsx'export default defineComponent(() => { // 传入 setup 函数 const countRef = ref(300) const render = () => { return <> <p>DEMO2--{countRef.value}</p> <JSXChild a={countRef.value + 100}></JSXChild> </> } return render })// 子组件 JSXChild.jsximport { defineComponent } from 'vue'export default defineComponent({ // 传入组件配置 props: ['a'], setup (props) { const render = () => { return <> <p>child {props.a}</p> </> } return render }})2. JSX 和 template 的区别语法上有很大区别:JSX 本质就是 js 代码,可以使用 js 的任何能力template 只能嵌入简单的 js 表达式,其他需要指令,如 v-ifJSX 已经成为 ES 规范,template 还是 Vue 自家规范本质是相同的:都会被编译为 js 代码(render 函数)2.1 插值template 使用双括号 {{ }}jsx 使用单括号 { }// template<template> <p>{{ name }} -- {{ age }}</p></template>// jsxconst render = () => { return <> <p>child {props.a}</p> </>}2.2 自定义组件template 组件名使用时可改变大小写或是驼峰,jsx 不可更改引入动态参数,template使用冒号+参数名(:msg='msg'),jsx 不需要冒号// template<template> <div class="home"> <watch-effect :msg="msgRef"/> </div></template><script>import { ref } from 'vue'import WatchEffect from '@/components/WatchEffect.vue'export default { name: 'HomeView', components: { WatchEffect, }, setup () { const msgRef = ref('123') return { msgRef } }}</script>// jsx 组件名称不可变,要和引入名字保持一致import { defineComponent, ref } from 'vue'import JSXChild from './JSXChild.jsx'export default defineComponent(() => { const countRef = ref(300) const render = () => { return <> <p>DEMO2--{countRef.value}</p> <JSXChild a={countRef.value + 100}></JSXChild> </> } 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 <> <p>DEMO2--{countRef.value}</p> <JSXChild a={countRef.value + 100} change={onChange}></JSXChild> </> } return render})2.4 条件和循环 条件 template 使用 v-if 指令,jsx 在表达式中使用 && (类似 if( a && b))// template v-if<template> <p v-if="flagRef">template demo</p> <button @click="changeFlagRef">click</button></template><script>import { ref } from 'vue'export default { setup () { const flagRef = ref(true) function changeFlagRef () { flagRef.value = !flagRef.value } return { flagRef, changeFlagRef } }}</script>// 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 <> <p onClick={changeFlagRef}>DEMO2--{flagRef.value.toString()}</p> {flagRef.value && <JSXChild a={flagRef.value}></JSXChild>} </> } return render}) 循环 template 使用 v-for 指令,jsx 使用数组的 .map 函数// template v-for<template> <ul> <li v-for="item in state.list" :key="item">{{ item }}</li> </ul></template><script>import { reactive } from 'vue'export default { setup () { const state = reactive({ list: ['a', 'b', 'c'] }) return { state } }}</script>// jsx 数组 .map 函数import { defineComponent, reactive } from 'vue'export default defineComponent(() => { const state = reactive({ list: ['a1', 'b1', 'c1'] }) const render = () => { return <> <ul> {state.list.map(item => <li>{item}</li>)} </ul> </> } return render})3. JSX 和 slot (体会 JSX 的优越性)slot 是 Vue 发明的概念,为了完善 template 的能力slot 一直是 Vue 初学者的“噩梦”,特别是:作用域 slot但使用 JSX 将很容易理解,因为 JSX 本质就是 js
本文链接地址:https://www.jiuchutong.com/zhishi/298812.html 转载请保留说明!

上一篇:pinia和vuex的区别 Vuex 和 Pinia 的优缺点 何时使用Pinia,何时使用Vuex(vuex和bus)

下一篇:关于node版本16+ 安装依赖会出现error的问题(node最新版本)

  • vivox60桌面怎么恢复原始图标布局(vivox60桌面怎么设置照片)

    vivox60桌面怎么恢复原始图标布局(vivox60桌面怎么设置照片)

  • MIUI 12.5.7系统(小米miui12.5.7)

    MIUI 12.5.7系统(小米miui12.5.7)

  • 小米耳机可以连接苹果手机吗(小米耳机可以连接电脑吗)

    小米耳机可以连接苹果手机吗(小米耳机可以连接电脑吗)

  • 快手蓝v认证需要多钱(快手蓝v认证需要什么材料)

    快手蓝v认证需要多钱(快手蓝v认证需要什么材料)

  • dell笔记本无法开机(dell笔记本无法开机黑屏电源灯不亮)

    dell笔记本无法开机(dell笔记本无法开机黑屏电源灯不亮)

  • 注销qq空间后自己还可以看吗(注销qq空间后自己能看到吗)

    注销qq空间后自己还可以看吗(注销qq空间后自己能看到吗)

  • 通信助手取消了会怎样(通信助手包取消有影响吗)

    通信助手取消了会怎样(通信助手包取消有影响吗)

  • 平板辐射大还是手机辐射大(平板辐射大还是电视机辐射大些)

    平板辐射大还是手机辐射大(平板辐射大还是电视机辐射大些)

  • 咸鱼包邮是得自己出运费吗(咸鱼包邮安全吗)

    咸鱼包邮是得自己出运费吗(咸鱼包邮安全吗)

  • 怎么删除抖自己的视频作品(怎么删除抖自己的抖音)

    怎么删除抖自己的视频作品(怎么删除抖自己的抖音)

  • ipadair3可以用第几代笔(ipadair第三代可以用笔吗)

    ipadair3可以用第几代笔(ipadair第三代可以用笔吗)

  • 网络规划的基本原则是什么(网络规划的基本过程和内容有哪些?)

    网络规划的基本原则是什么(网络规划的基本过程和内容有哪些?)

  • 华为手机屏幕上的返回键在哪设置(华为手机屏幕上的时间和日期怎么调出来)

    华为手机屏幕上的返回键在哪设置(华为手机屏幕上的时间和日期怎么调出来)

  • 戴尔杀毒软件怎么关闭(戴尔电脑自带的杀毒软件在哪)

    戴尔杀毒软件怎么关闭(戴尔电脑自带的杀毒软件在哪)

  • 移动卡hd代表什么意思(移动卡有个hd)

    移动卡hd代表什么意思(移动卡有个hd)

  • tcl电视怎么连接机顶盒

    tcl电视怎么连接机顶盒

  • 红色的cmyk值是多少(各种红色的色值cmyk)

    红色的cmyk值是多少(各种红色的色值cmyk)

  • mysql死锁产生原因(mysql解决死锁的4种基本方法)

    mysql死锁产生原因(mysql解决死锁的4种基本方法)

  • vivo手机有防水功能吗(苹果手机防不防水)

    vivo手机有防水功能吗(苹果手机防不防水)

  • vivo官网买手机从哪里发货(vivo官网买手机可靠吗会不会是翻新机)

    vivo官网买手机从哪里发货(vivo官网买手机可靠吗会不会是翻新机)

  • oppo手机怎么显示未读消息数量(oppo手机怎么显示流量使用情况)

    oppo手机怎么显示未读消息数量(oppo手机怎么显示流量使用情况)

  • 苹果8p没有震动怎么回事(苹果8p没有震动器可以开机吗?)

    苹果8p没有震动怎么回事(苹果8p没有震动器可以开机吗?)

  • 拼多多农场怎么找(拼多多农场怎么进)

    拼多多农场怎么找(拼多多农场怎么进)

  • 将在MAC电脑屏幕上的操作录制下来制成Gif格式动画(macbook直接显示桌面)

    将在MAC电脑屏幕上的操作录制下来制成Gif格式动画(macbook直接显示桌面)

  • 机器学习,看这一篇就够了:回归算法,特征工程,分类算法,聚类算法,神经网络,深度学习入门

    机器学习,看这一篇就够了:回归算法,特征工程,分类算法,聚类算法,神经网络,深度学习入门

  • uniapp APP消息推送方案(uniapp 信息推送)

    uniapp APP消息推送方案(uniapp 信息推送)

  • 公司替员工承担个税怎么入账
  • 提前报废的设备
  • 纳税检查调减进项税额主表怎么不显示缴纳税款
  • 广告费业务宣传费扣除标准
  • 小型微利企业税率2023
  • 产权转移书据印花税计税依据
  • 支付与其他经营活动有关的现金公式
  • 一般纳税人销售二手车
  • 员工在外出差的说说
  • 固定资产升值可以入账吗?
  • 弃置费用的现值p/f
  • 居间费用超过3%剩余的怎样能拿到手
  • 资产负债表里的存货包括哪些科目
  • 配件的出口是否可以免抵退?
  • 计提社保费计入什么科目
  • 银行汇票转给第三方怎么操作
  • 专票已认证但又没有发票
  • 营改增后的民办养老院收入是否含增值税收入?
  • 增值税税负率税率怎么算
  • 专用发票地址写错字了能用吗
  • 房产企业竞标取消通知
  • 房地产开发企业的土地使用权计入哪里
  • 认定为虚开进项发票我的业务是真实的
  • 企业所得税计算方法公式
  • 有什么办法可以快速减肥
  • 如何在win10桌面上显示时钟
  • 电商快递费怎么做账
  • 自产产品用于业务招待 如何申报企业所得税
  • 修建污水处理厂施工方案包括哪些内容
  • 计提本月银行借款利息是收付实现制还是权责发生制
  • vue写css
  • 限售股是好是坏
  • 如何用php制作表格
  • 未分配利润与净利润关系
  • 公司收加盟费合法吗?
  • zend框架教程
  • 帝国cms功能
  • 商业承兑汇票和银行承兑汇票的分录
  • 所得税主要特点有
  • 公司记账可以不开发票吗
  • 如何设置linux
  • 增值税发票的认证
  • python 逻辑取反
  • 进项税额漏报处理办法
  • 报销业务招待费是什么凭证
  • 不开增值税发票的销售收入报税操作流程是?
  • 预付款项为什么这么多
  • 工资薪金所得适用的税率是
  • 利润表中其他业务利润怎么算
  • 小微企业免税销售额和其他免税销售额的区别
  • 设备维修三种形式
  • 利润分配贷方余额怎么处理
  • 1元换购的商品是正品吗
  • 留样产品的保存期限
  • 社保退休金计算方法
  • 支付借款利息需要交税吗
  • 房地产公司属于什么企业
  • 红冲发票需要收回原发票吗 税屋
  • 货款折扣的账务处理
  • 集资建房有维修基金吗
  • 咨询服务费开票税率
  • 记账簿的目的在于为企业
  • mysql union join
  • 升级尝鲜
  • windows server 2003 r2 序列号
  • hprof-conv.exe
  • windowsxp如何清理磁盘
  • mongo 安装
  • win7怎么样激活
  • linux文件操作常用命令
  • 删除系统桌面
  • node session
  • css一个页面跳转到另一页面
  • node创建服务
  • android新手入门
  • python中闭包的作用
  • Django1.7+python 2.78+pycharm配置mysql数据库
  • opencv识别结果输出
  • 报纸的增值税税目是什么
  • 税务津贴提高1100
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设