当前位置: 首页 > article >正文

解锁 Vue 项目中 TSX 配置与应用简单攻略

在这里插入图片描述

在 Vue 项目中配置 TSX 写法

在 Vue 项目中使用 TSX 可以为我们带来更灵活、高效的开发体验,特别是在处理复杂组件逻辑和动态渲染时。以下是详细的配置步骤:

一、安装相关依赖

首先,我们需要在命令行中输入以下命令来安装 @vitejs/plugin-vue-jsx 插件:

pnpm i @vitejs/plugin-vue-jsx -D

这里使用 pnpm 进行安装,如果使用的是 npm 或者 yarn,将命令中的 pnpm 替换为相应的包管理器命令即可。这个插件是用于在 Vite 项目中支持 Vue 的 JSX 语法。

二、Vite 配置

vite.config.js 文件中进行如下配置:

import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'

export default defineConfig({
  plugins: [vue(), vueJsx()]
})

三、Vite 配置

在 tsconfig.json 文件中,需要添加以下配置:

  "compilerOptions": {
    "jsx": "preserve",
    "jsxFactory": "h",
    "jsxFragmentFactory": "Fragment",
  }

四、示例

//注意文件格式应该是tsx或jsx,这里由于csdn无法识别,所以代码格式写成js
import { defineComponent,ref } from 'vue'

const MyComponent = defineComponent({
  setup() {
    const a=ref('helloworld!') 
    return () => (
      <div>
        <h1>{a.value}</h1>
      </div>
    )
  }
})

export default MyComponent

简单介绍Tsx

流程

vue编译时将tsx文件解析为typescript文件,然后编译为js文件,最后运行时解析js文件,将js文件解析为render function,通过h函数构建虚拟DOM

语法

1. v-model

// 注意tsx不会自动从ref中解析value
const message = ref<string>('Hello, World!');
<input type="text" v-model={message.value}/>

//也可以
<input type="text" value={inputText.value}/>

2. v-show

<div v-show={message.value} >this is {message.value}</div>

3. v-if和v-else

使用三目运算符实现

<div>
    {
        message.value?'你输入了:'+message.value:'没有哦'
    }
</div>

4. 数组遍历v-for

使用map实现

<div>
  {
      arr.value.map((item,index)=>{
          return <div key={index}>{item}</div>
      })
  }
</div>

5. 绑定事件

如果不需要传参数,直接绑定

const count=ref<number>(0)
const handleClick=()=>{
  count.value++
}

<div>
  <button onClick={handleClick}>{count.value}</button>
</div>

如果需要传参

<button onClick={() => handleClick(count.value)}>{count.value}</button>

如果需要添加事件修饰符,使用驼峰写法将他们拼接在事件名后面

6. tsx中引入scss样式

  • 新建样式文件 xx.module.scss,其中写样式
    module意味着这个文件被当作模块来处理,生成的css类名会被局部化,自动加上唯一哈希值,防止类名冲突
  • 文件中引入样式文件
import styles from '../styles/parent.module.scss'

//对应的元素上添加类名
<div class={styles.red}>红色</div>
  • 也可以直接简单的引入
import '../styles/parent.scss'
<div class="blue">蓝色</div>

7. 父子组件传参

// 父组件传参
<InputSelect options={options.value} v-model={formData.value.data}></InputSelect>

//子组件接收参数
props:{
        modelValue:{
          type:Object,
          default:()=>({})
        },
        options:{
          type:Array
        }
      },
    setup(props){
      //...
    }

http://www.kler.cn/a/413473.html

相关文章:

  • 基本功能实现
  • Paddle Inference部署推理(三)
  • docker 安装arm架构mysql8
  • 太速科技-512-基于ZU19EG的4路100G 8路40G的光纤汇流计算卡
  • 2024APMCM亚太杯数学建模C题【宠物行业】原创论文分享
  • 【排版教程】Word、WPS 分节符(奇数页等) 自动变成 分节符(下一页) 解决办法
  • YOLOv8 代码训练与中文字体配置教程(Linux、Windows通用)
  • MyBatis事务管理-附案例代码
  • Redis(概念、IO模型、多路选择算法、安装和启停)
  • 2024年wordpress、d-link等相关的多个cve漏洞poc
  • 【MySQL】表的操作(增删查改)
  • Oracle 中的表 ID(OBJECT_ID)段 ID(DATA_OBJECT_ID)
  • SAAS美容美发系统架构解析
  • 爬虫案例-亚马逊验证码突破
  • idea初始化设置
  • 《进程隔离机制:C++多进程编程安全的坚固堡垒》
  • 【含开题报告+文档+PPT+源码】基于SSM的电影数据挖掘与分析可视化系统设计与实现
  • 水库大坝安全监测之量水堰计应用
  • Android 13 Aosp Settings Android Studio版本
  • 树莓派搭建NextCloud:给数据一个安全的家
  • 如何为 XFS 文件系统的 /dev/centos/root 增加 800G 空间
  • vue实现滚动条滑动到底部分页调取后端接口加载数据
  • JS小模块练习
  • 【Python】 深入理解Python的单元测试:用unittest和pytest进行测试驱动开发
  • Oracle RMAN异机迁移数据库从文件系统至ASM
  • ffmpeg命令详解