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 相关文章推荐
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
Nov 11 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
May 23 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
Dec 05 Javascript
JavaScript实现自动消除按钮功能的方法
Aug 05 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
Aug 18 Javascript
javascript闭包概念简单解析(推荐)
Jun 03 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
Jan 19 Javascript
ES6中Symbol类型用法实例详解
Apr 06 Javascript
Vue应用部署到服务器的正确方式
Jul 15 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
Jun 24 Javascript
在小程序中推送模板消息的实现方法
Jul 22 Javascript
微信小程序实现吸顶效果
Jan 08 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 常用类整理
2009/12/23 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
php微信公众号开发模式详解
2016/11/28 PHP
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
js获取php变量的实现代码
2013/08/10 Javascript
JavaScript动态创建link标签到head里的方法
2014/12/22 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
jQuery实现径向动画菜单效果
2015/07/17 Javascript
微信小程序 加载 app-service.js 错误解决方法
2016/10/12 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
2017/02/09 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
解决vue build打包之后首页白屏的问题
2018/03/06 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
js布局实现单选按钮控件
2020/01/17 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
jQuery 选择方法及$(this)用法实例分析
2020/05/19 jQuery
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
Python中pygal绘制雷达图代码分享
2017/12/07 Python
Python实现螺旋矩阵的填充算法示例
2017/12/28 Python
Python中矩阵创建和矩阵运算方法
2018/08/04 Python
python爬虫要用到的库总结
2020/07/28 Python
努比亚手机官网:nubia
2016/10/06 全球购物
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
信用社实习人员自我鉴定
2013/09/20 职场文书
护士进修自我鉴定
2014/02/07 职场文书
《王二小》教学反思
2014/02/27 职场文书
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
经典爱情感言
2015/08/03 职场文书
反邪教学习心得体会
2016/01/15 职场文书