以 JSX 的方式来编写 Vue3 代码
2021-03-02 11:27
标签:数据 接口 head 提示 com outer 安装 lin rop 使用 vue ui 创建 vue3 项目 安装 修改 babel.config.js 文件 和 一个组件返回多个元素,和 React.Fragment 差不多 创建 ASlotDemo 组件,ASlotDemo 有具名插槽 在模板中定义插槽需要用到 在使用范围插槽时,可以定义个接口,获得语法提示 在父组件使用时,必须 on + 事件名(事件名第一个字母必须大写) 源码: https://github.com/NikolasSky/vue3-tsx 以 JSX 的方式来编写 Vue3 代码 标签:数据 接口 head 提示 com outer 安装 lin rop 原文地址:https://www.cnblogs.com/plum-nikolas/p/14344782.html创建项目
vue-router
vuex
@vue/cli-plugin-typescript
, @vue/babel-plugin-jsx
module.exports = {
presets: [
‘@vue/cli-plugin-babel/preset‘
],
plugins: ["@vue/babel-plugin-jsx"]
}
import {defineComponent} from ‘vue‘;
export default defineComponent({
name: "",
setup() {
return () => (
>
)
}
})
路由
RouterView
是一样的用法import {defineComponent} from ‘vue‘;
import {RouterView} from ‘vue-router‘
export default defineComponent({
setup() {
return () =>
RouterLink
import {defineComponent} from ‘vue‘;
import {RouterLink} from ‘vue-router‘
export default defineComponent({
name: "RouterLinkDemo",
setup() {
return () =>
Fragment
短语法 >
import {defineComponent, Fragment} from ‘vue‘;
export default defineComponent({
name: "FragmentDemo",
setup() {
const a = (
插槽
带有插槽的组件
header
,范围插槽 footer
, jsx 中使用renderSlot
函数渲染插槽renderSlot
接收 Slots, 插槽名,插槽数据,进行渲染import {defineComponent, renderSlot} from "vue";
export default defineComponent({
name: "ASlotDemo",
setup(props, {slots}) {
const {default: defaultSlot, header, footer} = slots;
const footerData = {
text: "2020-1-20"
}
return () => (
使用
import {defineComponent} from "vue";
import ASlotDemo from "@/components/slot/ASlotDemo";
interface IFooterSlotData {
text: string;
}
export default defineComponent({
name: "BSlotDemo",
setup() {
return () => (
我是: BSlotDemo
emits
// AEmitsDemo.jsx
import {defineComponent} from ‘vue‘;
export default defineComponent({
name: "AEmitsDemo",
emits: [‘click‘, ‘getDate‘],
setup(props, {emit}) {
const click = () => {
console.log(‘点击++++++++‘)
emit("click")
}
return () => (
下一篇:原生js也可以自定义组件
文章标题:以 JSX 的方式来编写 Vue3 代码
文章链接:http://soscw.com/index.php/essay/59010.html