iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么在vue3中使用jsx语法
  • 375
分享到

怎么在vue3中使用jsx语法

2023-07-05 09:07:22 375人浏览 薄情痞子
摘要

今天小编给大家分享一下怎么在vue3中使用jsx语法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。背景Vue3项目中 推进使

今天小编给大家分享一下怎么在vue3中使用jsx语法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    背景

    Vue3项目中 推进使用composition-api + setup 形式
    配合jsx+hooks形式,按业务分离,逻辑更清晰,维护更方便。

    语法

    下面主要通过对比jsx和template不同语法,来实现同样的功能

    一丶 普通内容

    普通内容常量,写法是一样的

    //jsx 写法setup() {  return ()=><p type="email">hello</p>}//tempalte 写法  <tempalte>     <p type="email">hello</p>  </template>

    二丶 动态变量

    jsx 统一使用大括号包裹变量,没有引号,比如 <div age={age}>{age}</div>
    tempalte 内容使用双大括号包裹属性变量使用冒号开头<div :age="age">{{age}}</div>

    {} 是jsx的万能的用法,里面可以写js的表达式循环逻辑操作等等

    //jsx 写法setup() {  let age = 1             return ()=><div age={age}>{age}</div> //没有" "包裹,统一都是{}}//tempalte 写法  <tempalte>     <div :age="age">{{age}}</div>  </template>

    三丶 函数事件

    1.基本用法

    jsxtempalte的函数区别如下:

    • jsx使用on+大驼峰形式(首字母大写),template使用 @+短横线 形式

    • jsx方法名需要使用 {} 包裹起来,tempalte使用 " " 包裹起来

    用例1:

    //jsx 写法setup() {  const age= ref(0);  let inc = ()=>{      age.value++   }  return ()=> <div onClick={inc}>{age.value}</div>}//tempalte 写法  <tempalte>     <div @click="inc">{{age}}</div>   </template>

    2.参数进阶

    jsxtempalte都一样:无自定义参数的函数不需要带()结尾
    jsx在使用带参数的函数,则需要使用箭头函数包裹{()=>fn(args)}
    jsx需要借助withModifiers,实现.self ,.stop等修饰符的效果

    用例2:

    //jsx 写法import { withModifiers} from "vue";...setup() {  const age= ref(0);  let inc = ()=>{      age.value++   }  return ()=> (  <> //根 路径必须有节点,或者用<>代表fragment空节点    <div onClick={inc}>{age.value}</div>  //无自定义参数,不需要()    <div onClick={()=>inc('test')}>{age.value}</div>  //有参数,需要()=>包裹    //withModifiers包裹vue修饰符    <div onClick={withModifiers(inc, ["stop"])}>{age.value}</div> //也可以再inc函数中使用e.stopPropagation()等    <input onKeyup=={(ev) => {     //键盘事件enter事件         //逻辑部分也可以写入js        if (ev.key === 'Enter') {           inc ();        }     }}></input >   </> )}//tempalte 写法  <tempalte>     <div @click="inc"}>{{age}}</div>     <div @click="inc('test')"}>{{age}}</div>     <div @click.stop="inc"}>{{age}}</div>  //stop修饰符     <input @keyup.enter="inc"}>{{age}}</input>  //键盘事件enter事件  </template>

    四丶 ref绑定

    vue3中 有两种ref,一种是指的ref()定义的双向绑定变量,另外则是 绑定在Dom标签的ref引用

    对于ref()双向绑定变量,jsx不会向template自动处理.value问题,需要手动加value
    对于Dom标签的ref引用,jsx是直接用ref(null)变量,不需要加.valuetempalte则是用同名字符串

    用例:

    //jsx 写法setup() {  const divRef=ref(null);  const age= ref(0);    return ()=>   (     <div ref={divRef} > //Dom标签的ref引用        <span>{age.value}</span>   //ref()双向绑定变量     </div>   ) }//tempalte 写法  <tempalte>     <div ref='divRef'>  //Dom标签的ref,使用同名字符串        <span>{{age}}</span>   //ref()双向绑定变量,不需要.value     </div>  </template>

    五丶 v-model语法

    jsx中使用v-model或v-models代替templatev-model

    组件只有一个v-model时,使用v-model语法
    组件只有多个v-model时,可以使用v-model:xx语法

    多个v-model时 也可以v-models语法,需传递一个二维数组(新版已经不推荐)

    用例:

    //jsx 写法setup() {  const age= ref(0);    const gender =ref('')  return ()=>   (     <tz-input v-model={age} />        <tz-input v-model:foo={age} />  //v-model带修饰,推荐(v-model:修饰符)     <tz-input v-model={[age, "foo"]} />  //v-model带修饰 (新版不推荐)     //多个v-model     <tz-input    //推荐(v-model:修饰符)       v-model:foo={age}       v-model:bar={gender}     />       <tz-input          v-models={[          //使用v-models,传递二维数组 (新版不推荐)                   [age, "foo"],          [gender, "bar"],         ]}     />   ) }//tempalte 写法  <tempalte>     <tz-input v-model="age" />     <tz-input v-model.foo="age" />  //v-model带修饰     <tz-input        v-model.foo="age"     //多个v-model       v-model.bar="gender"     />  </template>

    六丶 v-slots语法

    jsx中使用 v-slots 代替 v-slot (简写#)

    用例:

    //jsx 写法//方法一const App = {  setup() {    const slots = {      default: () => <div>A</div>,     //默认插槽      bar: () => <span>B</span>,       //具名插槽    };    return () => <A v-slots={slots} />;  },};//方法二const App = {  setup() {    return () => (      <>        <A>          {{            default: () => <div>A</div>,   //此方法 默认default不能少            bar: () => <span>B</span>,   //具名插槽          }}        </A>        <B>{() => "foo"}</B>      </>    );  },};//tempalte 写法 <tempalte>   <tempalte v-slot:bar>  //具名插槽,也叫 #bar     <A />   </template>   <tempalte v-slot:default>     <A />   </template> </template>

    七丶 v-for语法

    jsx中可使用js中的map循环来实现tempalte的v-for逻辑

    用例:

    //jsx 写法setup() {  const arr= ref([{label:'1'},{label:'2'},{label:'3'}]);        return ()=>(        <>     { arr.value.map(item=> <span key={item.label}>{item.label}</span> ) }     </>    ) }//tempalte 写法  <tempalte>     <span v-for="item in arr" :key="item.label">{{item.label}}</span>   </template>

    八丶 v-if语法

    jsx中可使用js中的if逻辑三目运算&&,|| 等来实现tempalte的v-if逻辑

    用例:

    //jsx 写法setup() {  const show= ref(false);        return ()=>(        <>     {show && <span>test vif</span>}      //使用&&运算         {!show && <span>test velse</span>}     </>    ) }setup() {  const show= ref(false);        return ()=>(        <>      <span>{show.value ? 'test vif' : 'test velse'}</span>    //三目运算        </>    ) }setup() {  const show= ref(false);   const vif=()=>{     if(show) {        return  <span>test vif</span>      }     return  <span>test velse</span>   }     return ()=>(        <>        vif()   //if条件函数     </>    ) }//tempalte 写法  <tempalte>     <span v-if="show">test vif</span>      <span v-else>test velse</span>   </template>

    九丶 v-show语法

    用例:

    //jsx 写法setup() {  const show= ref(false);        return ()=>(        <>      <span v-show={show.value}> test vshow</span>    //v-show     </>    ) }//tempalte 写法  <tempalte>    <span v-show="show"> test vshow </span>   </template>

    十丶 指令的修饰符用法

    指令使用下划线 ,比如v-loading
    用例:

    //jsx 写法setup() {  const isLoading= ref(true);        return ()=>(        <>      <span v-loading_fullscreen_lock={isLoading}> loading </span>         </>    ) }//tempalte 写法  <tempalte>    <span v-loading.fullscreen.lock="isLoading"> loading </span>   </template>

    以上就是“怎么在vue3中使用jsx语法”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

    --结束END--

    本文标题: 怎么在vue3中使用jsx语法

    本文链接: https://www.lsjlt.com/news/350817.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • 怎么在vue3中使用jsx语法
      今天小编给大家分享一下怎么在vue3中使用jsx语法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。背景vue3项目中 推进使...
      99+
      2023-07-05
    • 如何在vue3中使用jsx语法
      目录背景语法一丶 普通内容二丶 动态变量三丶 函数事件1.基本用法2.参数进阶四丶 ref绑定五丶 v-model语法六丶 v-slots语法七丶 v-for语法八丶 v-if语法九...
      99+
      2023-03-06
      vue3使用jsx语法 vue jsx语法
    • 怎么在Vue3中使用jsx/tsx
      今天小编给大家分享一下怎么在Vue3中使用jsx/tsx的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。JSX 如何用这里以v...
      99+
      2023-07-05
    • vue3中如何使用JSX
      这篇文章主要介绍了vue3中如何使用JSX的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue3中如何使用JSX文章都会有所收获,下面我们一起来看看吧。在绝大多数情况下,Vue 推荐使用模板<templa...
      99+
      2023-07-04
    • 详解Vue3+Vite中怎么使用JSX
      虽然 jsx 最早是由 React 引入,但实际上 JSX 语法并没有定义运行时语义,并且能被编译成各种不同的输出形式。如果你之前使用过 JSX 语法,那么请注意 Vue 的 JSX 编译方式与 React 中 JSX 的编译方式不同,因此...
      99+
      2023-05-14
      Vue vue3 vite JSX
    • 如何在vue中使用jsx语法
      目录为什么需要在vue中使用jsx在vue中如何使用jsxtemplate转jsx的语法转换为什么需要在vue中使用jsx 几年前面试的时候,被问过这个问题,当时我一脸懵,这两个东西...
      99+
      2024-04-02
    • Vue3+Vite中如何使用JSX
      这篇文章主要介绍“Vue3+Vite中如何使用JSX”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue3+Vite中如何使用JSX”文章能帮助大家解决问题。JSX介绍JSX(JavaScript ...
      99+
      2023-07-04
    • 怎么在Vue中使用JSX
      本篇内容主要讲解“怎么在Vue中使用JSX”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在Vue中使用JSX”吧!简介先举一个例子来说明为什么 JSX 是好...
      99+
      2024-04-02
    • 一文详解vue3中使用JSX的方法
      在 Vue 3 的项目开发中,template 是 Vue 3 默认的写法。虽然 template 长得很像 HTML,但 Vue 其实会把 template 解析为 render 函数,之后,组件运行的时候通过 render 函数去返回虚...
      99+
      2022-11-25
      JSX Vue vue3
    • 一文详解如何在Vue3中使用jsx/tsx
      目录JSX 如何用插值条件渲染(v-if)列表循环(v-for)事件绑定事件修饰符v-model插槽最后我们都知道,通常情况下我们使用 vue 大多都是用的 SFC(Signle F...
      99+
      2023-03-23
      Vue3使用jsx/tsx Vue3 jsx/tsx Vue jsx tsx
    • 一文详解如何在Vue3+Vite中使用JSX
      目录JSX介绍在 Vue3 中使用 JSX安装插件(@vitejs/plugin-vue-jsx)新建 jsx 文件语法补充知识:注意事项总结JSX介绍 JSX(JavaScript...
      99+
      2023-02-16
      vue3 vite使用jsx vue3+vite 前端 vite搭建vue3
    • Vite创建Vue3项目及Vue3使用jsx的方法
      使用 yarn:yarn create @vitejs/app使用 npm:npm init @vitejs/app1. 输入项目名称这里输入我们的项目名称:vite-vue32. 选择框架这里选择我们需要集成的框架:vuevanilla:...
      99+
      2023-05-22
      Vue3 vite jsx
    • 如何在vue3中优雅的使用jsx/tsx详解
      目录前言安装插件(@vitejs/plugin-vue-jsx)1、插值2、class与style 绑定3、条件渲染4、列表渲染5、事件处理6、v-model7、slot插槽8、使用...
      99+
      2024-04-02
    • vue.js如何使用jsx语法
      这篇文章将为大家详细讲解有关vue.js如何使用jsx语法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vue  jsx  语法与 react&nbs...
      99+
      2024-04-02
    • vue3无法使用jsx的问题及解决
      目录vue3无法使用jsx问题报错一:无法使用 JSX,除非提供了 "--jsx" 标志报错二:ElementPlusIconsVue挂载问题关于vue3的jsx...
      99+
      2024-04-02
    • 怎么在Vue3中使用<script lang=“ts“ setup>语法糖
      迁移组件以下组件有两个道具(要显示的和一个标志)。通过另一个组件,计算模板中显示的小马图像的URL,基于这两个道具。该组件还会在用户单击它时发出一个事件。The image selected while the Ponypony ...
      99+
      2023-05-16
      Vue3 setup
    • Vue3使用JSX的方法实例(笔记自用)
      目录1. Vue3 中 JSX 的基本应用1.1 在 .vue 文件中使用 jsx1.2 .jsx文件格式2. JSX 和 template 的区别2.1 插值2.2 自定义组件2....
      99+
      2023-02-23
      vue3使用jsx组件 vue3使用jsx vue jsx
    • vue3 中使用 jsx 开发的详细过程
      目录安装 JSX 插件使用语法差异模板指令事件修饰符v-forv-on插槽安装 JSX 插件 在 Vue2 中要想使用 jsx 开发,需要安装 @vue/babel-preset-j...
      99+
      2024-04-02
    • Vue3中的模板语法怎么使用
      这篇文章主要介绍“Vue3中的模板语法怎么使用”,在日常操作中,相信很多人在Vue3中的模板语法怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue3中的模板语法怎么使用”的疑惑有所帮助!接下来,请跟...
      99+
      2023-07-05
    • 详解在vue3中使用jsx的配置以及一些小问题
      目录配置模版语法v-if/v-show配置 在vue3中使用jsx十分方便,只需要安装官方的@vitejs/plugin-vue-jsx插件,在vite.config.ts中配置 /...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作