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版本A*寻路算法
Dec 22 Javascript
ExtJS 2.2.1的grid控件在ie6中的显示问题
May 04 Javascript
jquery 全局AJAX事件使用代码
Nov 05 Javascript
JavaScript 盒模型 尺寸深入理解
Dec 31 Javascript
使用jquery实现简单的ajax
Jul 08 Javascript
JS delegate与live浅析
Dec 21 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
Mar 14 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
Oct 16 Javascript
微信小程序 教程之注册程序
Oct 17 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
May 02 Javascript
小程序云开发实现数据库异步操作同步化
May 18 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
Jul 09 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
PHP通过API获取手机号码归属地
2015/05/28 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
详解JavaScript中的Unescape()和String() 函数
2015/11/09 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
python练习程序批量修改文件名
2014/01/16 Python
python中二维阵列的变换实例
2014/10/09 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
2018/12/30 Python
对python判断是否回文数的实例详解
2019/02/08 Python
Python3数字求和的实例
2019/02/19 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
python实现Pyecharts实现动态地图(Map、Geo)
2020/03/25 Python
Django models文件模型变更错误解决
2020/05/11 Python
Python 在局部变量域中执行代码
2020/08/07 Python
python requests库的使用
2021/01/06 Python
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
传播学毕业生求职信
2013/10/11 职场文书
探亲邀请信范文
2014/01/30 职场文书
法学专业自我鉴定
2014/02/05 职场文书
便利店投资创业计划书
2014/02/08 职场文书
2014年情人节活动方案
2014/02/16 职场文书
厨房领班竞聘演讲稿
2014/04/23 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
信仰观后感
2015/06/03 职场文书
新学期主题班会
2015/08/17 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
SQL语句多表联合查询的方法示例
2022/04/18 MySQL