TSX常见简单入门用法之Vue3+Vite

目录
  • 1.安装tsx
    • 1.安装tsx插件
    • 2.vite.config.ts里的配置
    • 3.tsconfig.json里的配置
  • 2.使用TSX
    • 1.app.vue里的代码
    • 2.app.tsx的代码
  • 注意:
  • 总结

1.安装tsx

1.安装tsx插件

npm install @vitejs/plugin-vue-jsx -D

2.vite.config.ts里的配置

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue(),vueJsx()],
})

3.tsconfig.json里的配置

{
  "compilerOptions": {
    "target": "esnext",
    "useDefineForClassFields": true,
    "module": "esnext",
    "moduleResolution": "node",
    "strict": true,
    "jsx": "preserve",
    "jsxFactory": "h",
    "jsxFragmentFactory": "Fragment",
    "sourceMap": true,
    "resolveJsonModule": true,
    "isolatedModules": true,
    "esModuleInterop": true,
    "lib": ["esnext", "dom"],
    "skipLibCheck": true,
  },
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
  "references": [{ "path": "./tsconfig.node.json" }]
}

这三条为配置项

    "jsx": "preserve",
    "jsxFactory": "h",
    "jsxFragmentFactory": "Fragment",

2.使用TSX

1.app.vue里的代码

<template>
  <renderDom title="我是标题" @on-click="getNum"></renderDom>
</template>

<script setup lang="ts">

import renderDom from "./App";
import { provide, ref } from "vue";

const data = ref(false);
provide("flag", data);
const getNum = (num: number) => {
  console.log("我接受到了", num);
};
</script>

<style>
</style>

2.app.tsx的代码

import { ref } from "vue";

let v = ref<string>("");
let flag = ref(false);
let arr = ref([0, 1, 2, 3, 4, 5]);
//  tsx不会自动结构所以该用.value还是要使用
type Props = {
  title: string;
};
const renderDom = (props: Props, ctx: any) => {
  return (
    <div>
        <button onClick={clickEmit.bind(this,ctx)}>点击emit</button>
      <h1>{props.title}</h1>
      <div>
        <input v-model={v.value} type="text" />
        <div>
          <h1>{v.value}</h1>
        </div>
      </div>
      <div>
        <div v-show={flag.value}>正确的</div>
        <div v-show={!flag.value}>错误的</div>
      </div>
      {/* <div>
        <div v-if={flag.value}>正确的</div>
        <div v-if={!flag.value}>错误的</div>
        </div> */}
      {/* 不支持v-if 可用三元表达式去代替 */}
      <div>{flag.value ? <div>正确的</div> : <div>错误的</div>}</div>
      {/* 不支持v-for 但可以用map循环去代替 */}
      {/*不支持v-bind,可以直接绑定数值 */}
      <div>
        {arr.value.map((item, i: any) => {
          return (
            <div data-inext={i} onClick={clickIndex.bind(this, i)}>
              {item}
            </div>
          );
        })}
      </div>
    </div>
  );
};

const clickIndex = (i: any) => {
  alert(i);
};

const clickEmit=(ctx:any)=>{
    ctx.emit('on-click',123)
}
export default renderDom;

注意:

1.tsx里面写的标签内容是不会自动解构的,所以ref里面的.value还是要加上值才会出来2.tsx里面支持v-show,v-model,但不支持v-bind,v-for,v-if,所以再写这些的时候要更改写法

v-if使用三元表达式

  <div>{flag.value ? <div>正确的</div> : <div>错误的</div>}</div>

v-for通过map函数遍历数组来实现

 <div>
        {arr.value.map((item, i: any) => {
          return (
            <div data-inext={i} onClick={clickIndex.bind(this, i)}>
              {item}
            </div>
          );
        })}
  </div>

v-bind可以直接绑值

 <div data-inext={i} onClick={clickIndex.bind(this, i)}>

props和emit使用

1.props

<renderDom title="我是标题" @on-click="getNum"></renderDom>

(app.vue里传值title)

type Props = {
  title: string;
};
const renderDom = (props: Props, ctx: any) 

(renderDom里面接收后可以使用,和以前一样)

2.emit

const renderDom = (props: Props, ctx: any)

(拿到上下文)

 <button onClick={clickEmit.bind(this,ctx)}>点击emit</button>

(绑定方法)

const clickEmit=(ctx:any)=>{
    ctx.emit('on-click',123)
}

(通过emit传值)

(以上为app.tsx文件里面)

  <renderDom title="我是标题" @on-click="getNum"></renderDom>

(绑定自定义事件)

const getNum = (num: number) => {
  console.log("我收到了", num);
};

(拿到值去使用)

(以上为父组件收到并使用)

总结

到此这篇关于TSX常见简单入门用法之Vue3+Vite的文章就介绍到这了,更多相关TSX常见用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue3+vite使用jsx和tsx详情

    目录 安装@vitejs/plugin-vue-jsx 配置vite.config.js 使用实战 第一种写法使用this 第二种写法 第三种写法 安装@vitejs/plugin-vue-jsx yarn add -D @vitejs/plugin-vue-jsx npm i -D @vitejs/plugin-vue-jsx 配置vite.config.js ... import vueJsx from '@vitejs/plugin-vue-jsx'; export default def

  • Vue3中setup方法的用法详解

    目录 1.参数props 2.参数context 3. 子组件向父组件派发事件 4.优化事件派发 5.获取父组件传递的值 1.参数props props是一个对象,包含父组件传递给子组件的所有数据.在子组件中使用props进行接收.包含配置声明并传入的所有的属性的对象. 也就是说,如果你想通过props的方式输出父组件传递给子组件的值.你需要使用props进行接收配置.即props:{......}.如果你未通过Props进行接受配置,则输出的值是undefined <template> &l

  • Vue3+ts+setup getCurrentInstance使用时遇到的问题以及解决办法

    目录 环境 问题描述 问题解决 补充:Vue3 getCurrentInstance与ts结合使用的坑 一.关于在ts中使用到类型定义错误问题 二.不能使用getCurrentInstance的ctx 总结 环境 vscodetypescript4vue3 问题描述 首先,vue3中的全局变量及方法的配置较vue2中的变化大家应该已经知道了,不清楚的可以查看官方说明,但是按照官方文档结合typescript使用时遇到了问题: axios.ts // axios.ts import axios f

  • vue3 setup中父组件通过Ref调用子组件的方法(实例代码)

    目录 在setup()钩子函数中调用 在<srcipt setup>中调用 在setup()钩子函数中调用 父组件 <template> <div> 我是父组件 <children ref="childrenRef" /> <button @click="handleChildren">触发子组件</button> </div> </template> <scrip

  • 使用vue3+ts+setup获取全局变量getCurrentInstance的方法实例

    目录 前言: vue3官方提供的方法 1.引入方法 2.定义变量,接到我们的方法 3.main.js中定义我们的全局变量 4.页面中使用我们的全局变量 vue3+ts 使用官方方法遇到的问题: 最终我解决问题的方法: 补充:Vue3 getCurrentInstance与ts结合使用的问题 总结 前言: vue3的 setup中是获取不到this的,为此官方提供了特殊的方法,让我们可以使用this,达到我们获取全局变量的目的,但是在使用typescript的时候,就会有一些新的问题产生,这里来做

  • 如何在vue3中同时使用tsx与setup语法糖

    目录 前言 Tsx与setup语法糖的优势 遇到的问题 最后 前言 想这样做的原因是在vue3里使用tsx开发时,props的声明显得异常麻烦,不禁想到defineProps的便利,但同时在vue3里tsx文件里tsx语法的书写必须在setup函数或者render函数里,无法正常的使用defineProps等一系列的宏.为了能够更加便利,使用了下文的方法. Tsx与setup语法糖的优势 目前,在vue3中使用tsx已经越来越流行且便捷,对于webpack与vite构建的项目,都有很好的插件支持

  • 详解Vue3 父组件调用子组件方法($refs 在setup()、<script setup> 中使用)

    在 vue2 中 ref 被用来获取对应的子元素,然后调用子元素内部的方法. <template> <!-- 子组件 --> <TestComponent ref="TestComponent"></TestComponent> </template> <script> // 导入子组件 import TestComponent from './TestComponent' export default { com

  • vue3.0实践之写tsx语法实例

    目录 测试tsx 新建一个App.tsx页面 tsx使用v-model指令 (App.tsx组件) 使用v-show.与三目运算符 tsx之数组的遍历(map) 自定义属性 data-index tsx绑定事件 tsx之 props父组件向子组件传递参数 App.vue 父 App.tsx 子 tsx之子组件 向父组件 传递数据 子组件 App.tsx App.vue 父 总结 00:下载 yarn add @vitejs/plugin-vue-jsx -D 01:引入 vite.config.

  • TSX常见简单入门用法之Vue3+Vite

    目录 1.安装tsx 1.安装tsx插件 2.vite.config.ts里的配置 3.tsconfig.json里的配置 2.使用TSX 1.app.vue里的代码 2.app.tsx的代码 注意: 总结 1.安装tsx 1.安装tsx插件 npm install @vitejs/plugin-vue-jsx -D 2.vite.config.ts里的配置 import { defineConfig } from 'vite' import vue from '@vitejs/plugin-v

  • 常见python正则用法的简单实例

    下面列出Python正则表达式的几种匹配用法: 1.测试正则表达式是否匹配字符串的全部或部分 regex=ur"" #正则表达式 if re.search(regex, subject): do_something() else: do_anotherthing() 2.测试正则表达式是否匹配整个字符串 regex=ur"\Z" #正则表达式末尾以\Z结束 if re.match(regex, subject):     do_something() else:  

  • jQuery简单入门示例之用户校验demo示例

    本文实例讲述了jQuery简单入门示例之用户校验.分享给大家供大家参考,具体如下: jQuery在小编的世界中,也就是JavaScript和查询(Query),即是辅助JavaScript开发的库,百度百科对JQuery的介绍比较详细,小伙伴可以东东自己可耐的小爪子,上网进行搜索,说不定,有意外惊喜哦,今天这篇文章,小编简单的介绍一下JQuery的一些基本知识,然后小编在集合实例,讲解一下在具体的应用过程中,我们的JQuery又是如何在她的舞台熠熠生辉...... 通过JQuery的学习,我们可

  • php使用redis的几种常见操作方式和用法示例

    本文实例讲述了php使用redis的几种常见操作方式和用法.分享给大家供大家参考,具体如下: 一.简单的字符串缓存 比如针对一些sql查询较慢,更新不频繁的数据进行缓存. <?php $redis = new Redis(); $redis->connect('127.0.0.1', 6379, 60); $sql = 'select * from tb_order order by id desc limit 10'; //伪代码,从数据库中获取数据 $data = $db->quer

  • Vue3+Vite+TS实现二次封装element-plus业务组件sfasga

    目录 1.结构字符串 2.返回tuple元组 3.访问Dict字典 4.运用库 5.在列表中切片/步进 6.用 ranges 1.结构字符串 你会经常需求打印字符串.要是有很多变量,防止下面这样: name = "Raymond" age = 22 born_in = "Oakland, CA" string = "Hello my name is " + name + "and I'm " + str(age) + &quo

  • 如何利用Vue3+Vite批量导入模块/资源

    目录 前言 1,前置基础知识-JavaScript模块化编程 (1)export语句-暴露函数和变量使外部调用 (2)import语句-导入变量/函数并使用 (3)import*asxxx语句-全部导入 (4)exportdefault-默认导出 2,在Vite工程中批量导入js模块 3,在Vite工程中批量导入图片/音频等静态资源 总结 前言 在Vue项目开发中,我们常常会导入一些外部的模块,或者是自己写模块导入. 但是模块多了,一个个地导入很显然不是一个好办法,因此我们可以批量导入. 1,前

  • vue3 vite异步组件及路由懒加载实战示例

    目录 引言 一.前言 1-1.三点变化: 1-2.引入辅助函数defineAsyncComponent的原因: 二.Vue 2.x与Vue 3.x定义比较 2-1.异步组件/路由定义比较 2-2.声明方式比较 2-3.异步组件加载函数返回比较 三.Vue3实践 3-1.路由懒加载实现 3-2.异步组件实现 四.总结 引言 在 Vue2 中,异步组件和路由懒加载处理使用 import 就可以很轻松实现.但是在Vue 3.x 中异步组件的使用与 Vue 2.x 完全不同了.本文就详细讲讲vue3中异

  • PHP常见数组函数用法小结

    本文实例讲述了PHP常见数组函数用法.分享给大家供大家参考,具体如下: 1.array array_merge(array $array1 [, array  $array2 [, $array]]) 函数功能:将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面.返回结果的数组. 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值.然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面. 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方

  • python中Flask框架简单入门实例

    本文实例讲述了python中Flask框架的简单用法.分享给大家供大家参考.具体如下: 使用Flask框架的简单入门范例代码,如果你正学习Flask框架,可以参考下面的启动代码,这段代码可以在网页上输出"hello world" import os # Using Flask since Python doesn't have built-in session management from flask import Flask, session app = Flask(__name_

随机推荐