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 相关文章推荐
JS画5角星方法介绍
Sep 17 Javascript
js将字符串转成正则表达式的实现方法
Nov 13 Javascript
jQuery实现微信长按识别二维码功能
Aug 26 Javascript
Bootstrap选项卡动态切换效果
Nov 28 Javascript
详解angularjs跨页面传参遇到的一些问题
Nov 01 Javascript
JS与SQL方式随机生成高强度密码示例
Dec 29 Javascript
命令行批量截图Node脚本示例代码
Jan 25 Javascript
微信小程序基于picker实现级联菜单
Feb 15 Javascript
一个小时快速搭建微信小程序的方法步骤
Apr 15 Javascript
解决Layui中layer报错的问题
Sep 03 Javascript
vue中keep-alive,include的缓存问题
Nov 26 Javascript
Vue切换Tab动态渲染组件的操作
Sep 21 Javascript
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
索尼ICF-SW100收音机评测
2021/03/02 无线电
PHP 巧用数组降低程序的时间复杂度
2010/01/01 PHP
php网页标题中文乱码的有效解决方法
2014/03/05 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
JS的replace方法详细介绍
2012/11/09 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
如何在Node和浏览器控制台中打印彩色文字
2020/01/09 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
Python3实现转换Image图片格式
2018/06/21 Python
python使用tornado实现简单爬虫
2018/07/28 Python
详解Python传入参数的几种方法
2019/05/16 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
python os.rename实例用法详解
2020/12/06 Python
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
优秀毕业生求职信范文
2014/01/02 职场文书
人事专员工作职责
2014/02/22 职场文书
司法局火灾防控方案
2014/06/05 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL