小程序 抽象节点 selectable 与slot区别

news2024/11/15 11:48:58

比较

了解了微信小程序的抽象节点组件封装方式之后,觉得与vue的slot使用类似,但也有些区别 :

抽象节点 和 slot 有什么不同:

  • slot只需要你传入一段代码
  • 抽象节点需要你传入一个自定义组件,,不是让你只传递一段代码

抽象节点更加灵活,,将所有自定义权限都交给了调用者。

官方文档:

抽象节点 | 微信开放文档

抽象节点案例

以下小程序抽象节点案例效果图,单选与筛选框是2个封装好的组件component, 

第三个组件是抽象节点组件: selectable-group

此处显示调用是由父组件调用者index页面决定的

 项目结构:

 custom-checkbox组件

// index/custom-checkbox.js
Component({
  properties: {
    disabled: Boolean,
    selected: Boolean,
  },
})


<!--index/custom-checkbox.wxml-->
<checkbox disabled="{{disabled}}" checked="{{selected}}"></checkbox>


//json
{
  "component": true,
  "usingComponents": {}
}

custom-radio组件

// index/custom-radio.js
Component({
  properties: {
    disabled: Boolean,
    selected: Boolean,
  },
})

<!--index/custom-radio.wxml-->
<radio disabled="{{disabled}}" checked="{{selected}}"></radio>

//json
{
  "component": true,
  "usingComponents": {}
}

selectable-group:含抽象节点组件

// index/selectable-group.js
Component({
  data: {
    labels: [1, 2, 3],
    selected: [false, false, false],
  },
  methods: {
    itemTap: function(e) {
      var selected = [false, false, false];
      selected[e.currentTarget.dataset.index] = true;
      this.setData({
        selected: selected
      })
    }
  }
})


//index/selectable-group.wxml
<view wx:for="{{labels}}" wx:key="*this">
  <label bindtap="itemTap" data-index="{{index}}">
<!--    抽象节点: 由父组件决定这里要填充什么东西, 类似 slot-->
    <selectable disabled="{{false}}" selected="{{selected[index]}}"></selectable>
    {{item}}
  </label>
</view>


/* index/selectable-group.wxss */
:host {
  display: block;
}


// json :需要开启抽象节点使用 "selectable": true
{
  "component": true,
  "usingComponents": {},
  "componentGenerics": {
    "selectable": true
  }
}

抽象节点在json配置,其中,“selectable”不是任何在 json 文件的 usingComponents 字段中声明的组件,而是一个抽象节点。它需要在 componentGenerics 字段中声明:

{
  "componentGenerics": {
    "selectable": true
  }
}

 

index页面

//index.js
const app = getApp()

Page({
  data: {

  },
  onLoad: function () {
  },
})


//index.wxml
<view>selectable-group with custom-radio 抽象节点用单选框</view>
<selectable-group generic:selectable="custom-radio" />
<view>selectable-group with custom-checkbox 抽象节点用多选框</view>
<selectable-group generic:selectable="custom-checkbox" />


//index.wxss
.intro {
  margin: 30px;
  text-align: center;
}


// index.json
{
  "usingComponents": {
    "selectable-group": "/components/selectable-group/selectable-group",
    "custom-radio": "/components/custom-radio/custom-radio",
    "custom-checkbox": "/components/custom-checkbox/custom-checkbox"
  }
}

使用包含抽象节点的组件

index.wxml中,在使用 selectable-group 组件时,必须指定“selectable”具体是哪个组件:

<selectable-group generic:selectable="custom-radio" />

 

这样,在生成这个 selectable-group 组件的实例时,“selectable”节点会生成“custom-radio”组件实例。类似地,如果这样使用:

<selectable-group generic:selectable="custom-checkbox" />

“selectable”节点则会生成“custom-checkbox”组件实例。

注意:上述的 custom-radio 和 custom-checkbox 需要包含在这个 wxml 对应 json 文件的 usingComponents 定义段中。

{
  "usingComponents": {
    "custom-radio": "path/to/custom/radio",
    "custom-checkbox": "path/to/custom/checkbox"
  }
}

注意事项

  • 节点的 generic 引用 generic:xxx="yyy" 中,值 yyy 只能是静态值,不能包含数据绑定。因而抽象节点特性并不适用于动态决定节点名的场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/656036.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes集群本地连接调试工具KtConnect

一、简介 KtConnect&#xff08;Kt为Kubernetes Toolkit集群工具包的简写&#xff09;是一款基于Kubernetes环境用于提高本地测试联调效率的小工具 Connect&#xff1a;建立数据代理通道&#xff0c;实现本地服务直接访问Kubernetes集群内网&#xff08;包括Pod IP和Service域…

Jetpack Compose教程-水位控制小部件

Jetpack Compose教程-水位控制小部件 Apple的应用程序和小部件一直是设计的典范&#xff0c;也给我们的"复制系列&#xff1a;活动应用"和"卡片应用"提供了灵感。当他们发布了新款苹果手表Ultra时&#xff0c;它里面深度测量小部件的设计引起了我们的兴趣&…

加快奔向“国际数字之都” CDEC2023中国数字智能生态大会走进上海

数智闪耀长三角&#xff0c;风云际会上海滩。 6月14日上午&#xff0c;以汇聚数字产业动能、打造区域合作为主旨的 CDEC2023中国数字智能生态大会上海站活动在浦东软件园创新体验中心举行。 大会以“共建AI智能生态”为主题&#xff0c;吸引致远互联、SAP、浪潮等龙头企业&…

2022年山东省职业院校技能大赛网络搭建与应用赛项网络搭建与安全部署服务器配置及应用

2022年山东省职业院校技能大赛 网络搭建与应用赛项 第二部分 网络搭建与安全部署&服务器配置及应用 竞赛说明&#xff1a; 一、竞赛内容分布 竞赛共分二个模块&#xff0c;其中&#xff1a; 第一模块&#xff1a;网络搭建及安全部署项目 第二模块&#xff1a;服务器…

C#里的var和dynamic区别到底是什么,你真的搞懂了嘛

前言 这个var和dynamic都是不确定的初始化类型&#xff0c;但是这两个本质上的不同。不同在哪儿呢?var编译阶段确定类型&#xff0c;dynamic运行时阶段确定类型。这种说法对不对呢&#xff1f;本篇看下,文章原文地址&#xff1a;在这里 概括 以下详细叙述下这两个(var,dynamic…

CVE-2023-33246命令执行复现分析

简介 RocketMQ是一款低延迟、高并发、高可用、高可靠的分布式消息中间件。既可为分布式应用系统提供异步解耦和削峰填谷的能力&#xff0c;同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。 影响版本 <RocketMQ 5.1.0 <RocketMQ 4.9.5 环境搭建 docker…

Leetcode 剑指 Offer II 031. 最近最少使用缓存

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 运用所掌握的数据结构&#xff0c;设计和实现一个 LRU (Least Re…

Python 类型检测:isinstance() 与 type()

文章目录 参考描述面向对象编程概念类与实例继承super() 与代理对象方法的自动继承属性的继承 isinstance 与 type 内置函数isinstance()可迭代对象仅能为元组可能产生的 TypeError嵌套的元组 typeisinstance() 与 type() 的区别 参考 项目描述Python 官方文档https://docs.py…

【C语言初阶】分支语句If与switch的具体用法,有这篇博客就够了

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,这里是君兮_,今天又来给大家更新0基础学习C语言中的文章啦&#xff01; 今天带来的是对分支语句的详解&#xff0c;初学者建议先看看总集哦, 这里是链接: 【C语言初阶】万字解析,带你0基础快速入门C语言(上) 【C语…

图片转excel表格算法之霍夫变换法原理浅析

大家伙都知道&#xff0c;图片转excel表格是金鸣识别中一项非常重要的功能&#xff0c;金鸣识别的OCR在识别图片中的表格时&#xff0c;会用到一种叫霍夫变换法的算法&#xff0c;那这个算法到底是怎么回事&#xff1f;它的原理又是什么呢&#xff1f; 一、霍夫变换法的概念 …

深入了解模板知识(c++)

前言 在c中模板是很重的&#xff0c;泛型编程就是模板最好的体现&#xff0c;模板的出现就是为了更好的复用代码&#xff0c;有了它&#xff0c;我们不必写各种逻辑相同只是逻辑中的数据的类型的不同的代码&#xff0c;使得我们编写代码变得更加高效&#xff0c;下面让我们一起…

若依权限系统分析(前后端分离版)

若依权限系统分析 一&#xff1a;故事背景二&#xff1a;具体权限控制2.1 页面权限控制2.2 页面元素权限控制 三&#xff1a;实现前端鉴权3.1 封装js与权限交互3.1.1 uni-app自带uni-request与权限交互 3.2 vux状态管理3.2.1 自定义状态3.2.2 在vuex的store配置内添加我们新增的…

rust切片

这里s的不可变引用借用给了wordIndex&#xff0c;而s.clear()又想用可变引用&#xff0c;所以报错。而第一个例子中返回的usize并没有返回不可变引用。

客户端负载均衡工具Ribbon

一 什么是Ribbon Ribbon介绍 目前主流的负载方案分为以下两种&#xff1a; 集中式负载均衡&#xff0c;在消费者和服务提供方中间使用独立的代理方式进行负载&#xff0c;有硬件的&#xff08;比如 F5&#xff09;&#xff0c;也有软件的&#xff08;比如 Nginx&#xff09;…

Ubuntu系统中分布式安装配置HBase-2.3.7

HBase是一个基于Hadoop的分布式列式数据库&#xff0c;可以存储海量的结构化和半结构化数据。本文介绍如何在三个Ubuntu系统上搭建一个HBase集群&#xff0c;并进行简单的数据操作。 在三个Ubuntu系统上分布式安装配置HBase-2.3.7&#xff0c;主要步骤包括&#xff1a; 准备工…

MySQL的执行原理

一、单表访问之索引合并 我们前边说过MySQL在一般情况下执行一个查询时最多只会用到单个二级索引&#xff0c;但存在有特殊情况&#xff0c;在这些特殊情况下也可能在一个查询中使用到多个二级索引&#xff0c;MySQL中这种使用到多个索引来完成一次查询的执行方法称之为&#…

Qgis加载在线XYZ瓦片影像服务的实践操作

目录 背景 一、XYZ瓦片相关知识 1、xyz瓦片金字塔 2、 瓦片编号 3、瓦片访问 二、在Qgis中加载在线地图 1、Qgis版本 2、瓦片加载 3、地图属性预览 总结 背景 在做电子地图应用的时候&#xff0c;很常见的会提到瓦片&#xff08;tile&#xff09;的概念&#xff0c;瓦片…

Java实训日志07

文章目录 八、项目开发实现步骤&#xff08;十&#xff09;创建应用程序类1、创建app子包2、创建Application类 &#xff08;十一&#xff09;创建窗口界面类1、创建主界面窗口&#xff08;1&#xff09;做一个空白的主界面窗口&#xff08;2&#xff09;退出时弹出消息框询问用…

【cutlass】cuTe layout操作

简介 cuTe提供了对Layout操作的算法&#xff0c;可以混合执行来构建更复杂的Layout操作&#xff0c;比如在其他layout之间切分和平铺layout 在host或者device上打印cuTe cuTe的打印函数可以在host和device端打印。cute::print 重载了几乎所有 CuTe 类型&#xff0c;包括指针…

MT8168/MTK8168核心板,4G安卓核心板

MT8168是一款集成度很高的高性能应用处理器&#xff0c;具有低功耗特性&#xff0c;并且提供卓越的多媒体体验&#xff0c;适用于平板电脑、智能手持终端以及智能家居和物联网应用等嵌入式设备。这款芯片采用了先进的12纳米工艺&#xff0c;将四核Arm-Cortex A53 MPCore TM CPU…