小程序自定义组件 - 插槽slot
和 vue 的 slot 几乎是一模一样的. 这个学小程序就相当于复习了一把 vue, 还是很值的.
我们之前说组件是页面的一部分, 目的是为了代码复用, 作为组件封装者, 有时候需要设计一些让用户能自定义输入的内容, 即通过预留一些 "占位符" 空间给到用户, 那实现这种占位的设计就叫做 slot.
作为组件的使用这, 在使用组件时通过按需 "填充 slot" 则完成了自身的业务逻辑.
单个 slot
在小程序中, 默认每个自定义组件中只允许使用一个 slot 进行占位. 这种就成为单个插槽.
<!-- 1.组件的封装者, 假设组件名叫 cj -->
<view>
<view>我是组件的内部节点</view>
<!-- 对于未知内容可用 slot 进行占位, 内容由用户决定 -->
<slot></slot>
</view>
<!-- 2.组件的使用者, 给组件传一个 "hello, youge" 的内容 -->
<cj>
<!-- 这个 view 的区域会替换掉组件的 slot 区域 -->
<view>hello, world</view>
</cj>
这一看就秒懂. 俺之前学 vue 的时候对这个 slot 还不太懂, 现在突然觉得好简单, 感谢小程序让我复习. 具体演示一下, 还是以之前的 cj 组件为例.
组件 cj 的 .wxml 部分:
<!--components/cj/cj.wxml-->
<view>
<view>这是组件的内部结构,</view>
<slot></slot>
</view>
在 index 页面中使用组件, 并给组件 slot 传递内容:
<!--/pages/index/index.wxml-->
<view>
<text>下面显示的都是 cj 组件内容: </text>
<cj>
<view>我是外面传递给组件用以占位 slot 的.</view>
</cj>
</view>
则最终在 index 的渲染为:
下面显示的都是 cj 组件内容:
这是组件的内部结构,
我是外面传递给组件用以占位 slot 的.
多个 slot
但当组件比较复杂, 且需要使用多个 slot 的时候, 也是可以在组件的 js 中进行配置的, 即在组件定义时的 options 配置中设置 multipleSlots: true 即可.
Component({
options: {
multipleSlots: true
}
})
在使用的时候, 通过在 slot 标签中通过设置 name 属性值来区分, 即相当于 vue 中的具名插槽啦.
<view>
<slot name="before"></slot>
<text>俺是中间部分一段固定文本啦</text>
<slot name="after"></slot>
</view>
在使用的时候通过添加一个属性 slot="插槽名" 这样就对号入座了. 这里也整个例子演示一下啦.
组件 cj 的 wxml 部分:
<!--components/cj/cj.wxml-->
<view class="cj">
<slot name="before"></slot>
<view>俺是中间躺着不动的部分</view>
<slot name="after"></slot>
</view>
组件 js 中开启了多个 slot 设置:
Component({
options: {
multipleSlots: true
}
})
然后在 index 页面中使用 cj 组件, 分别给名为 before 和 after 这两个槽传递内容.
<!--/pages/index/index.wxml-->
<view>
<text>下面显示的都是 cj 组件内容: </text>
<cj>
<view slot="before">我是外面传递给 cj 组件中 before 槽的</view>
<view slot="after">我是外面传递给 cj 组件中 after 槽的</view>
</cj>
</view>
最终页面渲染如下:
下面显示的都是 cj 组件内容:
我是外面传递给 cj 组件中 before 槽的
俺是组件中间躺着不动的部分
我是外面传递给 cj 组件中 after 槽的
我一脸问号, 这不就是和 vue 一模一样嘛, vue 中这就叫做具名插槽, 直接用 v-slot="xxx". 但小程序这里和 vue 不同是, 它要在组件 js 中的 options 配置 multipleSlots=true. 但我感觉小程序还满简单的,相对于 vue 中的各种通信又传值的 slot 各种骚操作来说.
小程序自定义组件 - 插槽slot的更多相关文章
- 微信小程序自定义组件,提示组件
微信小程序自定义组件,这里列举了一个常用的提示自定义组件,调用自定义组件中的方法和字段.仅供参考和学习. 编写组件: 在根目录下添加“components”目录,然后像添加Page页面一样添加自定义组 ...
- 小程序的组件插槽使用slot===以及小程序多个插槽使用方法 三步骤
===================== 小程序多个插槽使用方法 三步骤 小程序多个插槽第一步 小程序组件内使用多个插槽第二部 小程序使用多个插槽第三部
- 微信小程序自定义组件实现
官方从 1.6.3 开始对于自定义组件这一块有了比较大的变动,首先比较明显的感觉就是文档比以前全多了,有木有!,现在小程序支持简洁的组件化编程,可以将页面内的功能模块抽象成自定义组件,以便在不同的页面 ...
- 微信小程序自定义组件
要做自定义组件,我们先定一个小目标,比如说我们在小程序中实现一下 WEUI 中的弹窗组件,基本效果图如下. Step1 我们初始化一个小程序(本示例基础版本库为 1.7 ),删掉里面的示例代码,并新建 ...
- 微信小程序自定义组件的使用以及调用自定义组件中的方法
在写小程序的时候,有时候页面的内容过多,逻辑比较复杂,如果全部都写在一个页面的话,会比较繁杂,代码可读性比较差,也不易于后期代码维护,这时候可以把里面某部分功能抽出来,单独封装为一个组件,也就是通常说 ...
- 如何在小程序自定义组件和动态传入数据小demo
在开发过程中,我们会将页面常用功能抽象为一个组件,这样既方便又可以避免代码冗余.小程序中也提供了自定义组件,了解Vue的伙伴们会发现其实和Vue的组件化很相似.这里用返回顶部功能来说说如何自定义组件, ...
- 微信小程序自定义组件-下拉框
这个是网址https://www.cnblogs.com/zjjDaily/p/9548433.html 微信小程序之自定义select下拉选项框组件 知识点:组件,animation,获取当前点击元 ...
- wx小程序自定义组件与页面之间参数传递
在开发中,很多页面中会使用相同的组件,这时可以将具有相同信息的部分封装成一个组件,方便开发中调用.在调用中可能会涉及到数据的传递问题,例如页面与组件,组件与组件直接的数据传递. 首先看看页面与组件直接 ...
- 微信小程序自定义组件封装及父子间组件传值
首先在我们可以直接写到需要的 page 中,然后再进行抽取组件,自定义组件建议 wxzx-xxx 命名 官网地址:https://developers.weixin.qq.com/miniprogra ...
- 微信小程序 自定义组件(stepper)
项目目录: 步骤一:创建组件 声明这一组文件为自定义组件 stepper.json { "component": true, "usingComponents" ...
随机推荐
- DeepSeek提示词工程完全指南:如何用「思维翻译器」激发大模型潜能——附官方提示词和优化案例
DeepSeek提示词工程完全指南:如何用「思维翻译器」激发大模型潜能--附官方提示词和优化案例 字数:约3000字|预计阅读时间:8分钟 之前写了一篇DeepSeek-R1 技术全景解析:从原理到实 ...
- 面试官最想听到的Vue和React区别
前言 欧阳最近找工作面试时总是被问到两个问题:Vue和React的区别和从编译原理的角度来聊聊Vue的template和React的jsx.面试官问这些问题一般是想了解你对这两个框架的理解,所以这是一 ...
- python - [12] 脚本一文通
题记部分 一.文件夹&文件 (1)删除空文件夹 # 删除目录中的空文件夹 import os def move_epty_folders(directory_path): for root, ...
- 7. Nginx 工作机制&参数设置(详细讲解说明)
7. Nginx 工作机制&参数设置(详细讲解说明) @ 目录 7. Nginx 工作机制&参数设置(详细讲解说明) 1. Nginx 当中的 master-worker 机制原理 2 ...
- manim边学边做--移动相机的场景类
Manim作为强大的数学动画引擎,其核心功能之一是实现复杂的镜头运动控制. MovingCameraScene类正是为满足这种需求而设计的专业场景类. 与基础Scene类相比,它通过以下特性拓展了镜头 ...
- selenium自动化测试+OCR-获取图片页面小说
随着爬虫技术的发展,反爬虫技术也越来越高. 目前有些网站通过自定义字体库的方式实现反爬,主要表现在页面数据显示正常,但是页面获取到的实际数据是别的字符或者是一个编码.这种反爬需要解析网站自己的字体库, ...
- docker常见问题修复方法
一.运行容器报错:Error response from daemon: Error running DeviceCreate (createSnapDevice) dm_task_run faile ...
- Delphi 判断当前系统是否64位
uses Winapi.Windows; function IsWin64: Boolean; var IsWow64Process: function(Handle: THandle; var Re ...
- 保存深度值——小端序,位数,Android,Huawei AR engine
保存深度值--小端序,位数,Android accuireDepthImage 华为Mate Pro系列基本上前置摄像头都是有TOF的,也就是能够得到场景的深度信息,在华为的AR engine里提供了 ...
- Pydantic递归模型深度校验36计:从无限嵌套到亿级数据的优化法则
title: Pydantic递归模型深度校验36计:从无限嵌套到亿级数据的优化法则 date: 2025/3/26 updated: 2025/3/26 author: cmdragon excer ...