首页 > 编程语言 >#yyds干货盘点#【愚公系列】2022年10月 微信小程序-组件模板和组件样式

#yyds干货盘点#【愚公系列】2022年10月 微信小程序-组件模板和组件样式

时间:2022-10-23 21:08:33浏览次数:55  
标签:slot yyds 自定义 10 样式 组件 节点 模板

一、组件模板

组件模板的写法与页面模板相同。组件模板与组件数据结合后生成的节点树,将被插入到组件的引用位置上。

在组件模板中可以提供一个 <slot> 节点,用于承载组件引用时提供的子节点。

1.无命名插槽

<!-- 组件模板 -->
<view class="wrapper">
  <view>这里是组件的内部节点</view>
  <slot></slot>
</view>
<!-- 引用组件的页面模板 -->
<view>
  <component-tag-name>
    <!-- 这部分内容将被放置在组件 <slot> 的位置上 -->
    <view>这里是插入到组件slot中的内容</view>
  </component-tag-name>
</view>

2.命名插槽

默认情况下,一个组件的 wxml 中只能有一个 slot 。需要使用多 slot 时,可以在组件 js 中声明启用。

Component({
  options: {
    multipleSlots: true // 在组件定义时的选项中启用多slot支持
  },
  properties: { /* ... */ },
  methods: { /* ... */ }
})
<!-- 组件模板 -->
<view class="wrapper">
  <slot name="before"></slot>
  <view>这里是组件的内部细节</view>
  <slot name="after"></slot>
</view>
<!-- 引用组件的页面模板 -->
<view>
  <component-tag-name>
    <!-- 这部分内容将被放置在组件 <slot name="before"> 的位置上 -->
    <view slot="before">这里是插入到组件slot name="before"中的内容</view>
    <!-- 这部分内容将被放置在组件 <slot name="after"> 的位置上 -->
    <view slot="after">这里是插入到组件slot name="after"中的内容</view>
  </component-tag-name>
</view>

二、组件样式

1.禁用写法

组件对应 wxss 文件的样式,只对组件wxml内的节点生效。以下写法是不生效的

#a { } /* 在组件中不能使用 */
[a] { } /* 在组件中不能使用 */
button { } /* 在组件中不能使用 */
.a > .b { } /* 除非 .a 是 view 组件节点,否则不一定会生效 */

2.组件样式隔离

默认情况下,自定义组件的样式只受到自定义组件 wxss 的影响。但也有些特殊写法会影响到组件样式就必须隔离

Component({
  options: {
    addGlobalClass: true,
    styleIsolation: 'isolated'
  }
})

3.外部样式

有时,组件希望接受外部传入的样式类。此时可以在 Component 中用 externalClasses 定义段定义若干个外部样式类。

/* 组件 custom-component.js */
Component({
  externalClasses: ['my-class']
})
<!-- 组件 custom-component.wxml -->
<custom-component class="my-class">这段文本的颜色由组件外的 class 决定</custom-component>

4.页面样式引用

即使启用了样式隔离 isolated ,组件仍然可以在局部引用组件所在页面的样式或父组件的样式。

.blue-text {
  color: blue;
}
<view class="~blue-text"> 这段文本是蓝色的 </view>

5.父组件样式引用

.red-text {
  color: red;
}
<view class="^red-text"> 这段文本是红色的 </view>

6.虚拟化组件节点

自定义组件并不希望这个节点本身可以设置样式、响应 flex 布局等,而是希望自定义组件内部的第一层节点能够响应 flex 布局或者样式由自定义组件本身完全决定。

这种情况下,可以将这个自定义组件设置为“虚拟的”:

Component({
  options: {
    virtualHost: true
  },
  properties: {
    style: { // 定义 style 属性可以拿到 style 属性上设置的值
      type: String,
    }
  },
  externalClasses: ['class'], // 可以将 class 设为 externalClasses
})
<!-- 页面的 WXML -->
<view style="display: flex">
  <!-- 如果设置了 virtualHost ,节点上的样式将失效 -->
  <custom-component style="color: blue">不是蓝色的</custom-component>
</view>

标签:slot,yyds,自定义,10,样式,组件,节点,模板
From: https://blog.51cto.com/u_15437432/5787571

相关文章

  • #yyds干货盘点#JS中的map用法
    map()​​map()​​ 方法会返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。​​map​​​ 方法会给原数组中的每个元素都按顺序调用一次 ​​callback​​......
  • 10、CPU 如何选择线程
    在Linux内核中,进程和线程都是用 ​​task_struct​​ 结构体表示的,区别在于线程的task_struct结构体里部分资源是共享了进程已创建的资源,比如内存地址空间、代码段、......
  • MILIANKE-CZ01-7010/7020400-核心模块硬件手册(ZYNQ)
    1产品概述    自2017年MLK-CZ01-7010/7020-400(MZ7XCORE400)系列开发平台发布以来,该系列开发平台和核心模块经过多次迭代升级,在工业自动化、水利电力控制设备、医疗图......
  • 10.17-10.21周末回顾
    目录一、异常处理语法结构二、生成器对象三、模块2.导入模块的两种语句1import句式四、软件开发目录五、python常用内置模块1.collections模块1具名元组namedtuple2双......
  • 【公告】布客社区公告 2022.10
    布客社区将花N年时间转型为DAO翻译和整理合并为一个工作流(同一段时间只做一个),并且按照编程、玄学、两性、财务顺序轮替。高校课件整理与备份计划正式开始,感谢github上各......
  • 1024特别篇:快速上手ES索引模版
    ES(8.1)认证工程师考题大纲参考如下https://mp.weixin.qq.com/s/x7lMmMAo2563JysMJ8vgRQ1、题目今天咱们讨论的是《索引模板的创建与使用》大体思路如下:分两部分处理......
  • 2022-2023-1 20221310 《计算机基础与程序设计》第8周学习总结
    作业信息|这个作业属于哪个课程|https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP||这个作业要求在哪里|<作业要求的链接>https://www.cnblogs.com/rocedu/p/9......
  • 【闲话】2022.10.23
    今天没有考试于是赫了些DP题每日一(?)图密码是咱最喜欢的番二度提示:我们一日日……记得第一个字母大写怎么登不上SPOJ啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊今......
  • 浪潮1024工程师文化节编程大赛
    1.https://nanti.jisuanke.com/t/T1649简单模拟,对其从横方向和竖方向进行暴力搜索即可#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineI......
  • 缓存 - 方法注解组件开发
    缓存概述解决不同设备间速度不匹配问题。互联网分层架构:降低数据库压力,提升系统整体性能,缩短访问时间。高并发问题缓存并发(击穿):缓存过期后将尝试从后端数据库获取数......