Vue 3.0中jsx语法的使用


Posted in Javascript onNovember 13, 2020

Vue 3.0 正式发布了,喜大普奔?。新的语法又要学习一阵阵,不过需要在生产环境下大面积使用,可能需要等到它的周边工具:vuex,vue-router 等等全部升级完毕。

Vue 3.0 中尤大使用的了新的编译工具 vite,革了 webpack 的命?。尝试看了下文档,发现支持 jsx 语法,由于这段时间都是在使用 react 来开发项目,jsx 完全不同的体验,更加的纯粹与灵活。

项目创建

npm init vite-app vite-vue
cd vite-vue
npm install
npm run dev

我们发现创建的目录解构很简单

Vue 3.0中jsx语法的使用

使用 JSX

Vue 3.0 直接支持 jsx 语法,新建 demo.jsx

export default function JsxTemp() {
 return <div>
 <h3>jsx</h3>
 </div>
}

引入到 App.vue 中可以完整显示

Vue 3.0中jsx语法的使用

再尝试绑定数据

import { ref } from 'vue'

export default function JsxTemp() {
 const state = ref(0)
 const onClick = () => {
 state.value++;
 console.log(state.value)
 }
 return <div>
 <h3>state: {state.value}</h3>
 <button onClick={onClick}>点击</button>
 </div>
}

我们发现没有像我们想的那样 state 数一直自增?

Vue 3.0中jsx语法的使用

这是因为我们在 Vue 3.0 中需要使用 defineComponent 包裹来使其变成一个双向绑定数据的组件
参数 为 setup function | object

import { defineComponent, ref } from 'vue'

export default defineComponent(() => {
 const state = ref(0)
 const onClick = () => {
 state.value++;
 console.log(state.value)
 }
 return () => (
 <div>
  <h3>state: {state.value}</h3>
  <button onClick={onClick}>点击</button>
 </div>
 )
})

可以看到现在是实时点击实现自增效果

Vue 3.0中jsx语法的使用

组件通信

组件间传值通信该怎么来实现呢?

我们需要改用对象的方式来传入通信数据

App.vue
<JsxTemp site="imondo.cn" @onGet="onGet" />
export default {
 ...
 methods: {
 onGet(e) {
  console.log('emit:', e)
 }
 }
}
...
export default defineComponent({
 props: {
 site: String
 },
 setup({ site }) {
 const state = ref(0)
 const onClick = () => {
  state.value++;
  console.log(state.value)
  context.emit('onGet', 'Mondo');
 }
 return () => (
  <div>
  <h1>props: {site}</h1>
  <h3>state: {state.value}</h3>
  <button onClick={onClick}>点击</button>
  </div>
 )
 }
})

实现效果

Vue 3.0中jsx语法的使用

总结

我们尝试了在 Vue 3.0 中如何使用 jsx ,这有助于我们在项目中更灵活的公用我们组件,由此也可以区分我们在项目中使用的方式

  • 无状态组件 我们完全可以使用纯函数来展示
  • 有状态组件 存在逻辑与数据绑定的组件则需要使用 Vue 3.0 提供的一系列组件 API

以上就是Vue 3.0 中 jsx 语法使用的详细内容,更多关于Vue 3.0 jsx 语法的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
javascript 写类方式之七
Jul 05 Javascript
Web开发者必备的12款超赞jQuery插件
Dec 03 Javascript
有关JavaScript的10个怪癖和秘密分享
Aug 28 Javascript
详解JavaScript的变量和数据类型
Nov 27 Javascript
jQuery实现的简单提示信息插件
Dec 08 Javascript
jquery延迟对象解析
Oct 26 Javascript
Windows下Node.js安装及环境配置方法
Sep 18 Javascript
vue项目中axios使用详解
Feb 07 Javascript
浅谈layui里的上传控件问题
Sep 26 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
Nov 19 Javascript
JS表格的动态操作完整示例
Jan 13 Javascript
深入了解Vue动态组件和异步组件
Jan 26 Vue.js
vue点击Dashboard不同内容 跳转到同一表格的实例
Nov 13 #Javascript
解决iView Table组件宽度只变大不变小的问题
Nov 13 #Javascript
PHP 502bad gateway原因及解决方案
Nov 13 #Javascript
解决iview table组件里的 固定列 表格不自适应的问题
Nov 13 #Javascript
Flexible.js可伸缩布局实现方法详解
Nov 13 #Javascript
vue切换菜单取消未完成接口请求的案例
Nov 13 #Javascript
在vue中嵌入外部网站的实现
Nov 13 #Javascript
You might like
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
JavaScript高级程序设计 读书笔记之八 Function类及闭包
2012/02/27 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
详解vue-cli 接口代理配置
2017/12/13 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
python Django模板的使用方法(图文)
2013/11/04 Python
Django中login_required装饰器的深入介绍
2017/11/24 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
python 以16进制打印输出的方法
2018/07/09 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
python 简单的调用有道翻译
2020/11/25 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
一个SQL面试题
2014/08/21 面试题
护理学毕业生求职信
2013/11/14 职场文书
家长对小学生的评语
2014/01/28 职场文书
集中采购方案
2014/06/10 职场文书
2014年教务工作总结
2014/12/03 职场文书
继续教育个人总结
2015/03/03 职场文书
高中班长竞选稿
2015/11/20 职场文书
python中tkinter复选框使用操作
2021/11/11 Python
一文搞懂MySQL索引页结构
2022/02/28 MySQL