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 相关文章推荐
短信提示使用 特效
Jan 19 Javascript
jquery 简单图片导航插件jquery.imgNav.js
Mar 17 Javascript
AngularJS入门教程之Hello World!
Dec 06 Javascript
两种JS实现屏蔽鼠标右键的方法
Aug 20 Javascript
Bootstrap页面布局基础知识全面解析
Jun 13 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
Dec 13 Javascript
完美解决JS文件页面加载时的阻塞问题
Dec 18 Javascript
基于JavaScript实现自定义滚动条
Jan 25 Javascript
微信小程序实现分享到朋友圈功能
Jul 19 Javascript
Vue递归实现树形菜单方法实例
Nov 06 Javascript
微信小程序之swiper滑动面板用法示例
Dec 04 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
Dec 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
基于PHP中的常用函数回顾
2013/07/11 PHP
php中用memcached实现页面防刷新功能
2014/08/19 PHP
php提交表单时保留多个空格及换行的文本样式的方法
2017/06/20 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
jQuery UI AutoComplete 自动完成使用小记
2010/08/21 Javascript
javascript是怎么继承的介绍
2012/01/05 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
JavaScript中关于class的调用方法
2017/11/28 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
Vue实现简易计算器
2020/02/25 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
解决pandas read_csv 读取中文列标题文件报错的问题
2018/06/15 Python
tensorflow使用神经网络实现mnist分类
2018/09/08 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
医院实习接收函
2014/01/12 职场文书
业务员薪酬管理制度
2014/01/15 职场文书
三年级评语大全
2014/04/23 职场文书
艺术教育实施方案
2014/05/03 职场文书
公证委托书格式
2014/09/13 职场文书
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python