广告
返回顶部
首页 > 资讯 > 精选 >Vue+tsx使用slot没有被替换的问题怎么解决
  • 411
分享到

Vue+tsx使用slot没有被替换的问题怎么解决

2023-06-20 20:06:44 411人浏览 薄情痞子
摘要

本篇内容介绍了“Vue+tsx使用slot没有被替换的问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录前言发现问题解决后记前言

本篇内容介绍了“Vue+tsx使用slot没有被替换的问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

目录
  • 前言

  • 发现问题

  • 解决

  • 后记

前言

最近自己准备写一个 UI 组件,想对 vue2.x3.x 可以更深层次的掌握

架构时,准备全部使用 tsx 书写组件

但遇到了 tsx 中使用 slot 的问题

发现问题

先写了一个基础的 card 组件:

card.tsx:

import Component from 'vue-class-component'import VanUIComponent from '@packs/common/VanUIComponent'import { Vnode } from 'vue'import { Prop } from 'vue-property-decorator'import { CardShadowEnum } from '@packs/config/card'@Componentexport default class Card extends VanUIComponent {  @Prop({    type: String,    default: undefined  }) public headerPadding !: string | undefined  @Prop({    type: String,    default: ''  }) public title !: string  @Prop({    type: String,    default: CardShadowEnum.Hover  }) public shadow !: CardShadowEnum  public static componentName = 'v-card'  public get wrapperClassName(): string {    const list: string[] = ['v-card__wrapper']    list.push(`shadow-${ this.shadow }`)    return list.join(' ')  }  public render(): VNode {    return (      <div class={ this.wrapperClassName }>        <div class="v-card__header" style={ { padding: this.headerPadding } }>          {            this.$slots.title ? <slot name="title" /> : <div>{ this.title }</div>          }        </div>        <div class="v-card__body">          <slot name="default" />        </div>        <div class="v-card__footer"></div>      </div>    )  }}

examples 中使用这个 v-card 的时候:

<template>  <v-card>    <template #title>1111</template>  </v-card></template><script lang="ts">import Vue from 'vue'import Component from 'vue-class-component'@Componentexport default class Components extends Vue {}</script><style lang="sCSS" scoped>.components__wrapper {  padding: 20px;}</style>

我发现渲染后,浏览器不替换 slot 标签:

Vue+tsx使用slot没有被替换的问题怎么解决

我在百度、Google寻找了一天也没有解释,在官方文档中仔仔细细阅读后,也没有类似的提示,以及 jsx 编译器的文档中也没有写明,只是声明了如何使用命名 slot

解决

第二天,我一直在纠结这个,也查了 element-uiant-design-vueUI 组件库中如何书写,也没有找到对应的使用 jsx 使用 slot 的。

不甘放弃的我更换了搜索文字,于是终于找到解决方案,并将代码改为:

...  public render(): VNode {    return (      <div class={ this.wrapperClassName }>        <div class="v-card__header" style={ { padding: this.headerPadding } }>          {            this.$slots.title ?? <div>{ this.title }</div>          }        </div>        <div class="v-card__body">          <slot name="default" />        </div>        <div class="v-card__footer"></div>      </div>    )  }...

再查看浏览器渲染:

Vue+tsx使用slot没有被替换的问题怎么解决

问题解决

后记

在使用 jsx / tsx 时,如果 js 语法本身可以解决的,或本身注册在 this 上的方法,优先使用 js 去做,例如 v-if / v-else 可以使用 双目运算符 替代。实在没有可用的简便方法,再使用 vue 的指令做,例如 v-show

“Vue+tsx使用slot没有被替换的问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Vue+tsx使用slot没有被替换的问题怎么解决

本文链接: https://www.lsjlt.com/news/299953.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue+tsx使用slot没有被替换的问题怎么解决
    本篇内容介绍了“Vue+tsx使用slot没有被替换的问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录前言发现问题解决后记前言...
    99+
    2023-06-20
  • Vue+tsx使用slot没有被替换的问题
    目录前言发现问题解决后记前言 最近自己准备写一个 UI 组件,想对 vue 的 2.x、3.x 可以更深层次的掌握 在架构时,准备全部使用 tsx 书写组件 但遇到了 tsx 中使用...
    99+
    2022-11-12
  • vue项目中created()被调用多次的问题怎么解决
    本文小编为大家详细介绍“vue项目中created()被调用多次的问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue项目中created()被调用多次的问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
    99+
    2023-07-05
  • 怎么解决使用Hashcode中distinct()方法没有起效问题
    本篇内容介绍了“怎么解决使用Hashcode中distinct()方法没有起效问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔...
    99+
    2022-10-19
  • xp怎么解决没有可用的音频设备问题
    本文小编为大家详细介绍“xp怎么解决没有可用的音频设备问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“xp怎么解决没有可用的音频设备问题”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。首先,点开始菜单,然后找到...
    99+
    2023-06-28
  • 怎么解决引用slf4j中Logger.info没有数据的问题
    这篇文章主要介绍“怎么解决引用slf4j中Logger.info没有数据的问题”,在日常操作中,相信很多人在怎么解决引用slf4j中Logger.info没有数据的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-06-22
  • vue中ref的使用问题怎么解决
    本文小编为大家详细介绍“vue中ref的使用问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue中ref的使用问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。vue的ref(this.$r...
    99+
    2023-06-29
  • 怎么解决使用vue-router与v-if实现tab切换遇到的问题
    这篇文章主要介绍怎么解决使用vue-router与v-if实现tab切换遇到的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!先上代码,用两种方式实现的效果使用vue-router...
    99+
    2022-10-19
  • 在Vue中使用dhtmlxGantt组件时遇到的问题怎么解决
    本文小编为大家详细介绍“在Vue中使用dhtmlxGantt组件时遇到的问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“在Vue中使用dhtmlxGantt组件时遇到的问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-07-05
  • 怎么解决在Vue中使用axios用form表单出现的问题
    这篇文章将为大家详细讲解有关怎么解决在Vue中使用axios用form表单出现的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vue中使用Axios第三方库,采用形式...
    99+
    2022-10-19
  • c#使用listbox的常见问题有哪些及怎么解决
    在使用 C# 的 ListBox 控件时,可能会遇到以下几个常见问题:1. 如何向 ListBox 添加项?使用 ListBox 的...
    99+
    2023-08-09
    c# listbox
  • 在不使用ssr的情况下怎么解决Vue单页面SEO问题
    小编给大家分享一下在不使用ssr的情况下怎么解决Vue单页面SEO问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!只是用php...
    99+
    2022-10-19
  • vue项目中使用axios遇到的相对路径和绝对路径问题怎么解决
    这篇文章主要讲解了“vue项目中使用axios遇到的相对路径和绝对路径问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue项目中使用axios遇到的相对路径和绝对路径问题怎么解决...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作