程序员让前端飞

小程序中slot插槽使用默认值方案

2022-10-27  本文已影响0人  蓝海00

前提:
在很多场景下我们希望自定义组件有较好的扩展性,在不传入slot的情况下默认展示默认的结构与样式,但小程序中的slot没有像vue中的slot一样提供默认值,这时候我们可以通过伪类选择器:empty相邻选择器+控制元素的display来实现

<view>
  <slot-item>
    <button>我是一个按钮</button>
  </slot-item>
  <slot-item></slot-item>
  <slot-item>
    <text style="color: red;">我是一个文本</text>
  </slot-item>
</view>
<view class="container">
  <view>我是header</view>
  <view class="content">
    <slot></slot>
  </view>
  <!-- 插槽默认值 -->
  <view class="default">我是slot默认值</view>
  <view>我是footer</view>
</view>
.default {
  width: 200rpx;
  height: 200rpx;
  background-color: #f99;
  text-align: center;
  line-height: 200rpx;
  margin: 0 auto;
  /* 默认值默认不显示 */
  display: none;
}

/* 当插槽内为空时 通过相邻选择器将默认值显示 */
.content:empty+.default {
  display: block;
}
上一篇 下一篇

猜你喜欢

热点阅读