Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在微信小程序中的bug:插槽默认内容无法被覆盖 #4229

Closed
GZHIH opened this issue Mar 27, 2023 · 3 comments
Closed

在微信小程序中的bug:插槽默认内容无法被覆盖 #4229

GZHIH opened this issue Mar 27, 2023 · 3 comments
Assignees
Labels
doubleCheck 二次确认 2 double mp-weixin 微信小程序 提供了复现方案 提供了复现方案 reproduce

Comments

@GZHIH
Copy link

GZHIH commented Mar 27, 2023

问题描述
组件使用插槽并且定义了插槽内的默认内容,想在其他使用的该组件地方覆盖掉默认内容。发现在微信小程序中始终无法被覆盖,但是在支付宝小程序中是正常可以被覆盖的。

复现步骤
插槽组件NavBarPageTemplate:

<template>
    <view class="fullPage" :style="pageStyle" @clickRight="navClickRight">
        <view class="nav_bar flex_c_" :style="navbarStyleCom">
            <view class="nav_back flex_c_c" @click="navigateBack">
                <slot name="nav-back">
                    <uni-icons type="left" size="26" v-if="showNavBarBackIcon"></uni-icons>
                </slot>
            </view>
            <view class="nav_title flex_c_c">
                <slot name="nav-title">首页</slot>
            </view>
    </view>
</template>

使用插槽组件的地方:

<NavBarPageTemplate>
    <template #nav-back>
        <uni-icons type="home" size="26"></uni-icons>
    </template>
    <template #nav-title>afafaf</template>
</NavBarPageTemplate>

预期结果
在微信小程序、支付宝小程序中应该渲染为 home 的uni-icon以及展示为'afafaf'的标题内容。

实际结果
在微信小程序中,插槽 nav-back 和 nav-title 中应该渲染出非默认的uni-icon和'首页'标题内容,但是实际上还是渲染的默认内容;
支付宝小程序中是正常的;

系统信息:

  • 发行平台: 微信小程序
  • 操作系统 iOS 、Android
  • uni-app版本 3.0.0-alpha-3070720230316001
  • 设备信息 iPhoneX

补充信息
[可选]
[根据你的分析,出现这个问题的原因可能在哪里?]

@IYFY
Copy link

IYFY commented Jun 29, 2023

我也遇到相同的问题。插槽中没默认值时,短横线命名、驼峰命名都可以;有默认值时,短横线命名会导致无法替换情况发生。

  <!-- 插槽定义: 该情况下,默认值没被替换 -->
  <slot name="uni-box">
    <text>默认</text>
  </slot>
  <!-- 插槽使用 -->
  <template #uni-box>
    <text>替换</text>
  </template>

  <!-- 插槽定义: 该情况下,默认值被替换 -->
  <slot name="uniBox">
    <text>默认</text>
  </slot>
  <!-- 插槽使用 -->
  <template #uniBox>
    <text>替换</text>
  </template>

@Otto-J
Copy link
Member

Otto-J commented Jan 9, 2024

vue3 复现了该问题,<slot name="header-slot">占位符</slot><slot name="header-slot"></slot> 表现不一致

问题产物在 <block wx:if="{{$slots.header-slot}}"> 这里应该需要补充方括号。
没有内容时候 ,编译为 <slot name="header-slot"></slot>

后续发版进行兼容。目前如果可以的话,建议换个不带特殊符号的插槽名称

@Otto-J
Copy link
Member

Otto-J commented Jan 10, 2024

#4678

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
doubleCheck 二次确认 2 double mp-weixin 微信小程序 提供了复现方案 提供了复现方案 reproduce
Projects
None yet
Development

No branches or pull requests

3 participants