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 相关文章推荐
IE中jscript/javascript的条件编译
Sep 07 Javascript
2010年最佳jQuery插件整理
Dec 06 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
Oct 16 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
Jul 24 Javascript
使用jQuery.fn自定义jQuery翻页插件
Jan 20 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
Mar 04 Javascript
深入学习JavaScript中的Rest参数和参数默认值
Jul 28 Javascript
详解JavaScript中的自定义事件编写
May 10 Javascript
详解Vue2 无限级分类(添加,删除,修改)
Mar 07 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
Nov 22 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
Sep 05 Javascript
vue实现广告栏上下滚动效果
Nov 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
PHP下对字符串的递增运算代码
2010/08/21 PHP
javascript语言结构小记(一)
2011/09/10 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
用javascript对一个json数组深度赋值示例
2014/07/27 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
详解Node.js项目APM监控之New Relic
2017/05/12 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
2017/05/27 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
2017/12/20 Javascript
WebSocket的简单介绍及应用
2019/05/23 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
JavaScript相等运算符的九条规则示例详解
2019/10/20 Javascript
vue-router之实现导航切换过渡动画效果
2019/10/31 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
[01:02:05]LGD vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
python 录制系统声音的示例
2020/12/21 Python
戴森美国官网:Dyson美国
2016/09/11 全球购物
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
物流司机岗位职责
2013/12/28 职场文书
新手上路标语
2014/06/20 职场文书
学习雷锋精神倡议书
2015/04/27 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
工作收入证明模板
2015/06/12 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
redis cluster支持pipeline的实现思路
2021/06/23 Redis