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
我们发现创建的目录解构很简单
使用 JSX
Vue 3.0 直接支持 jsx 语法,新建 demo.jsx
export default function JsxTemp() { return <div> <h3>jsx</h3> </div> }
引入到 App.vue 中可以完整显示
再尝试绑定数据
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 中需要使用 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> ) })
可以看到现在是实时点击实现自增效果
组件通信
组件间传值通信该怎么来实现呢😮
我们需要改用对象的方式来传入通信数据
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 jsx 语法的资料请关注站长技术其它相关文章!
?今天日常在群里划水被群友求助解决一个面试问题问题的大致需求是?从结果集种筛...
AJAX (Asynchronous JavaScript and XML,异步的 JavaScript 和 XML)。它不是...
本文主要介绍了关于.NET Core中依赖注入AutoMapper的相关内容,分享出来供大家参...
Spark RDD编程初级实践 湖工大永远滴神 茂林 提交异常问题解决 第一关 数据去重 ...
最近在给客户做一个客户管理系统时遇到一个问题: 使用下列这个连接字符串时情况...
【51CTO.com快译】2019年微软宣布推出Windows 10X,这是面向双屏可折叠设备的新...
首先,肯定是注册成为 开发者新浪微博开放平台 选择网站应用,填写一些基本信息 ...
报错代码 Failed to load config file: { code :5200, message : could not read...
本文实例讲述了jdbc操作mysql数据库的方法。分享给大家供大家参考。具体如下: i...
微软对Windows 10上的复制粘贴功能进行了全新升级,其带来了更大的便利。 微软现...