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

  • 腾讯地图怎么修改店铺名称(腾讯地图怎么修改家的位置)

    腾讯地图怎么修改店铺名称(腾讯地图怎么修改家的位置)

  • 红米k30pro一共有几种颜色(红米k30pro有几种配置)

    红米k30pro一共有几种颜色(红米k30pro有几种配置)

  • 华为am60连接不上手机(华为am10s蓝牙连接不上)

    华为am60连接不上手机(华为am10s蓝牙连接不上)

  • 为什么苹果慢动作屏闪(为什么苹果慢动作视频发出去不是慢动作)

    为什么苹果慢动作屏闪(为什么苹果慢动作视频发出去不是慢动作)

  • 快手手机号被别人绑定了怎么办(快手手机号被别人绑定有风险吗?)

    快手手机号被别人绑定了怎么办(快手手机号被别人绑定有风险吗?)

  • 抖音怎么发1分钟以上的作品(抖音怎么发1分钟以上长视频)

    抖音怎么发1分钟以上的作品(抖音怎么发1分钟以上长视频)

  • 苹果x防抖功能怎么开(苹果x 防抖)

    苹果x防抖功能怎么开(苹果x 防抖)

  • 移动los不亮是怎么回事(移动los亮红灯解决方法)

    移动los不亮是怎么回事(移动los亮红灯解决方法)

  • oppoa57t是全网通手机吗

    oppoa57t是全网通手机吗

  • airpods pro可以调节音量吗(airpods pro能调节音量么)

    airpods pro可以调节音量吗(airpods pro能调节音量么)

  • 苹果11和xr屏幕对比(苹果11和xr屏幕膜是一样的吗?)

    苹果11和xr屏幕对比(苹果11和xr屏幕膜是一样的吗?)

  • qq电话流量消耗多吗(qq电话流量消耗多少流量)

    qq电话流量消耗多吗(qq电话流量消耗多少流量)

  • 手机曲面屏有什么缺点(手机曲面屏有什么区别)

    手机曲面屏有什么缺点(手机曲面屏有什么区别)

  • 电热丝可以直接接电吗(电热丝可以直接接220吗)

    电热丝可以直接接电吗(电热丝可以直接接220吗)

  • 平板电脑能插u盘吗(华为平板电脑能插u盘吗)

    平板电脑能插u盘吗(华为平板电脑能插u盘吗)

  • 苹果骚扰电话如何拦截(苹果骚扰电话如何设置拦截)

    苹果骚扰电话如何拦截(苹果骚扰电话如何设置拦截)

  • 怎么快速回到桌面(快速回到桌面用什么组合键)

    怎么快速回到桌面(快速回到桌面用什么组合键)

  • vivo手机怎么找手电筒(vivo手机怎么找隐藏相册)

    vivo手机怎么找手电筒(vivo手机怎么找隐藏相册)

  • 苹果手机如何取消开机密码(苹果手机如何取消勿扰模式)

    苹果手机如何取消开机密码(苹果手机如何取消勿扰模式)

  • 代理服务器的功能(代理服务器的功能一般不包括)

    代理服务器的功能(代理服务器的功能一般不包括)

  • 退出合种树能量返回吗(合种的树退出后能量怎么拿回来)

    退出合种树能量返回吗(合种的树退出后能量怎么拿回来)

  • sim卡pin码忘了怎么办(sim卡pin码忘了怎么办移动)

    sim卡pin码忘了怎么办(sim卡pin码忘了怎么办移动)

  • 若依框架前后端各个请求方式参数传递示例(若依框架前后端一体化设计管理系统)

    若依框架前后端各个请求方式参数传递示例(若依框架前后端一体化设计管理系统)

  • 秋季迁徙时正在游过科伯克河的驯鹿,阿拉斯加 (© Michio Hoshino/Minden Pictures)(迁徙的季节主要从哪几个方面写秋天的景物)

    秋季迁徙时正在游过科伯克河的驯鹿,阿拉斯加 (© Michio Hoshino/Minden Pictures)(迁徙的季节主要从哪几个方面写秋天的景物)

  • 当月不发工资会影响社保吗
  • 中级报名的报考条件要求
  • 个税返还什么时候到账
  • 工资与社保的关系怎么写
  • 小规模纳税人减征额怎么计算
  • 人员新增申报表
  • 房地产项目结转条件
  • 个体户购买社保和自由人购买社保区别
  • 企业收取的租金会计分录
  • 一般公共预算支出是什么意思
  • 企业购置节能节水专用设备
  • 计提坏账的递延税收
  • 这个月只有进项没有销项
  • 银行收到对方付款的会计分录
  • 挂靠被查出来后挂靠费怎么处理?
  • 知识产权服务项目
  • 个人交物业费开发票交税点吗
  • 建筑工程项目部由哪几个部门组成
  • 接手新公司涉税问题分析
  • 法人给公司基本户打款
  • 汇算清缴报错了怎么更正
  • 在天猫店铺后台中的提现怎么做会计分录?
  • 印花税减半再减半政策文件是什么
  • 预付账款如何计提折旧
  • windows10如何设置桌面背景
  • 账户禁用无法登录怎么办
  • windows10怎么设置自启动
  • PHP:pg_untrace()的用法_PostgreSQL函数
  • php 错误和异常处理
  • 家庭承包发包方的权利和义务
  • 税务局要求小规模纳税人开专票
  • thinkphp框架介绍
  • ntpdate 命令
  • spring boot s
  • Php实现注解注入
  • 润滑油一般纳税人税率是多少
  • 成本分配明细表
  • 营业税改增值税的背景
  • js变量作用范围
  • 公司对其他公司的投资怎么做账
  • 固定资产折旧的账务处理
  • 员工报销差旅费现金流量表里放在哪里
  • 不动产作价出资入股登记收件
  • 电脑填制记账凭证合计数前的符号怎么输入
  • in参数太多导致sql过长
  • pos机刷卡未成功却扣了钱啥时候就退回来了
  • 购入的设备用于研发怎样记账
  • 认证发票抵扣有留抵税怎么做分录
  • 劳务公司开出的劳务票需要申报个税吗
  • 企业为什么要转移用工风险什么意思
  • 财务报告分析主要内容
  • 红字发票抵扣时增值税纳税申报表如何处理
  • 纳税人办理逾期申报流程
  • 打车费用会计分录
  • 收到的赔款罚款怎么做账
  • 房地产企业会计核算和税务处理大全
  • vcpkgsrv.exe是什么进程
  • win10安装 升级
  • os x 10.11 el capitan系统安装图文教程
  • centos哪个版本最好用2022
  • unity Toggle Groud
  • glib库
  • bootstrap内容
  • html中href,src区别
  • jsonp实现动态加载文件
  • android adbd
  • 获取linux命令执行结果
  • linux的启动顺序
  • vue router routes
  • jQuery插件库
  • 用户dsn添加
  • angularjs常用总结
  • 一步步教你用乐高拼个摩托车
  • 深入理解新发展理念
  • 江苏省无犯罪证明
  • 税务局遴选能去什么单位
  • 福建电子税务局登录入口
  • 矿产资源税怎样征收
  • 国税总局北京税务局
  • 乡镇经管站是如何工作
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设