位置: 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最新版本)

  • 淘宝推广方法详解,怎么利用QQ群和微信群(淘宝推广方法详细介绍)

    淘宝推广方法详解,怎么利用QQ群和微信群(淘宝推广方法详细介绍)

  • 荣耀手环4running版如何测心率(荣耀手环4running版充电没反应)

    荣耀手环4running版如何测心率(荣耀手环4running版充电没反应)

  • 抖音拉黑粉丝对方会知道吗(抖音拉黑粉丝对方列表里还有我吗怎么删除)

    抖音拉黑粉丝对方会知道吗(抖音拉黑粉丝对方列表里还有我吗怎么删除)

  • 内存条一线品牌(内存条一线品牌和二三线)

    内存条一线品牌(内存条一线品牌和二三线)

  • 电脑开机后进不了系统怎么办(电脑开机后进不了系统黑屏)

    电脑开机后进不了系统怎么办(电脑开机后进不了系统黑屏)

  • 荣耀v20网速慢解决方法(华为荣耀v20网络为什么那么卡)

    荣耀v20网速慢解决方法(华为荣耀v20网络为什么那么卡)

  • pr为什么导入不了视频(pr为什么导入不了mp3)

    pr为什么导入不了视频(pr为什么导入不了mp3)

  • 好友朋友圈不能点赞怎么回事(好友朋友圈不能按日期搜索了)

    好友朋友圈不能点赞怎么回事(好友朋友圈不能按日期搜索了)

  • 抖音限流了花钱买热门可以吗(抖音限流花钱帮忙解开安全吗)

    抖音限流了花钱买热门可以吗(抖音限流花钱帮忙解开安全吗)

  • 蓝牙耳机戴不住总掉怎么办(蓝牙耳机戴不住怎么办)

    蓝牙耳机戴不住总掉怎么办(蓝牙耳机戴不住怎么办)

  • 手机信号旁边有个圆圈(手机信号旁边有个圈什么原因)

    手机信号旁边有个圆圈(手机信号旁边有个圈什么原因)

  • mate30镜头玻璃是蓝宝石吗(mate30p镜头玻璃)

    mate30镜头玻璃是蓝宝石吗(mate30p镜头玻璃)

  • iphone6闪退频繁(iphone6p闪退)

    iphone6闪退频繁(iphone6p闪退)

  • word如何添加上标数字(word如何添加上划线)

    word如何添加上标数字(word如何添加上划线)

  • 华为m5青春版充满电要多久(华为m5青春版充电口)

    华为m5青春版充满电要多久(华为m5青春版充电口)

  • 三星a5怎么滚动截屏(三星a51手机如何滚动截屏)

    三星a5怎么滚动截屏(三星a51手机如何滚动截屏)

  • 勿扰模式闹钟会响嘛(勿扰模式闹钟会响吗vivo)

    勿扰模式闹钟会响嘛(勿扰模式闹钟会响吗vivo)

  • 音响调节器怎么调音量(音响调节器怎么是2路输入)

    音响调节器怎么调音量(音响调节器怎么是2路输入)

  • 苹果xr防水么(萍果xr防水吗)

    苹果xr防水么(萍果xr防水吗)

  • 苹果中英文切换(苹果中英文切换键坏了)

    苹果中英文切换(苹果中英文切换键坏了)

  • 重新下载微信后聊天记录怎么恢复(重新下载微信后聊天记录没有了)

    重新下载微信后聊天记录怎么恢复(重新下载微信后聊天记录没有了)

  • iphone充电发烫(iphone充电发烫正常吗)

    iphone充电发烫(iphone充电发烫正常吗)

  • 怎么打国际电话(移动怎么打国际电话)

    怎么打国际电话(移动怎么打国际电话)

  • 不缴或少缴应纳税款的处罚措施
  • 外轮供应公司远洋运输供应公司的退税申报?
  • 280元抵减税控设备
  • 纳税调整减少额是什么意思
  • 增值税零税率是一种税收优惠政策
  • 采用现金支付
  • 企业出售商铺需要预缴增值税吗
  • 土地摊销账务处理
  • 超过规定标准的扣除项目金额怎么算
  • 个人所得税红利20%
  • 增值税加计抵减最新政策2022
  • 为什么收不到发票短信?
  • 全年一次性奖金税率表
  • 处置固定资产需要税务局备案吗
  • 房地产企业土地使用权入什么科目
  • 房地产企业成本包括哪些
  • 未能及时取得成功的成语
  • 印花税这个月没交怎么办
  • 个人所得税合并扣税
  • 滞纳金属于罚没支出还是其他
  • 反写状态已反写是什么意思
  • 累计折旧属于什么
  • 收到政府补助用于购买环保设备
  • 公司没有实缴可以破产么
  • 个税免缴款
  • 网页不播放声音怎么设置
  • 受托加工物资入库流程
  • 电脑dat文件怎么打开
  • PHP:ftp_delete()的用法_FTP函数
  • linux去除文本中的特殊符号
  • 财政总预算会计科目
  • 电脑硬盘数据恢复一般需要收费多少钱
  • 存放中央银行款项科目按其资金性质
  • php实现上传文件
  • vuejs性能
  • js鼠标事件包括哪几种
  • 转让企业要交什么税
  • php使用正则表达式提取abcdef
  • 有关厉元朗的小说
  • java单点登录token
  • python编程自动化框架怎么搭建
  • 高校教材编写
  • 应付职工薪酬总账和明细账
  • 物业管理公司经营范围有哪些内容
  • 在建工程账务核算及处理
  • 企业所得税核定管理办法
  • mysql的左右连接
  • 房屋租赁税缴纳时间
  • 房地产会计分录怎么做
  • 差旅费退回怎么做账
  • 签订三方协议是办理实时扣税的前提,这里三方是指
  • 补缴以前年度所得税怎么做会计分录
  • 境内企业借外债,不还会怎么样
  • 出口退税分类管理三类企业
  • 亏损企业所得税汇算清缴后调减
  • 外资企业取得合法地位
  • 工会活动支出如何记账
  • 财务常见问题有哪些
  • 公司买东西算什么费用
  • 金蝶kis专业版怎么备份账套
  • js操作剪切板
  • xp系统控制面板在哪里打开
  • win10硬盘安装器安装教程
  • win7和2008r2
  • win7旗舰版系统激活码
  • windows关闭安全引导
  • windows出现问题怎么处理
  • mac新版系统
  • 缩略图无法显示
  • win8windows设置在哪里
  • Win10预览版桌面图标和任务栏不翼而飞怎么办?
  • win7指令代码
  • js类的使用
  • android升级是什么意思
  • nodejs cgi
  • android多指触控
  • javascript的主要内容
  • python方法有哪些
  • js滚动条滚动触发事件
  • Jquery $when done then的用法详解
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设