&l..._ 节点">
当前位置:   article > 正文

微信小程序——slot插槽的使用 (多插槽使用)_ 节点

节点

 一,创建组件

在根目录项目创建一个components文件夹目录,然后在里面创建你的组件,这里我们要注意创建组件页面时我们需要选择:创建Component

 

二,组件模板,插槽的使用

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

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

1,slot的使用

  1. <!-- 组件模板 -->
  2. <view class="wrapper">
  3. <view>这里是组件的内部节点</view>
  4. <slot></slot>
  5. </view>
  1. <!-- 引用组件的页面模板 -->
  2. <view>
  3. <detailM>
  4. <!-- 这部分内容将被放置在组件 <slot> 的位置上 -->
  5. <view>这里是插入到组件slot中的内容</view>
  6. </detailM>
  7. </view>

需要在引用组件的页面的json文件中加上组件命名和路径 

这里可以发现,我们在detail/index.wxml 页面中插入到组件slot中的内容已经到组件里面了

 

 2,利用组件传值

detail/index.wxml 页面,引入组件<detailM></detailM>,设置一个参数text把里面的内容传递给组件中,还有一个arr数组

  1. <view>
  2. <detailM text="goodsTxt页面数据" arrlist="{{arr}}">
  3. <!-- 这部分内容将被放置在组件 <slot> 的位置上 -->
  4. <view>这里是插入到组件slot中的内容</view>
  5. </detailM>
  6. </view>

子组件接收数据: 

  1. <view class="wrapper">
  2. <view>{{text}}</view>
  3. <view wx:for="{{arrlist}}">{{item}}</view>
  4. <view>这里是组件的内部节点</view>
  5. <slot></slot>
  6. </view>

子组件js部分用properties接收,后面是接参数类型 

页面效果: 

 

注意:这样的数据绑定只能传递 JSON 兼容数据。自基础库版本 2.0.9 开始,还可以在数据中包含函数(但这些函数不能在 WXML 中直接调用,只能传递给子组件)

 3,组件 wxml 的 slot,多个插槽使用

在组件的 wxml 中可以包含 slot 节点,用于承载组件使用者提供的 wxml 结构。

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

  1. Component({
  2. options: {
  3. multipleSlots: true // 在组件定义时的选项中启用多slot支持
  4. },
  5. properties: { /* ... */ },
  6. methods: { /* ... */ }
  7. }

此时,可以在这个组件的 wxml 中使用多个 slot ,以不同的 name 来区分。

  1. <!-- 组件模板 -->
  2. <view class="wrapper">
  3. <slot name="before"></slot>
  4. <view>这里是组件的内部细节</view>
  5. <slot name="after"></slot>
  6. </view>

使用时,用 slot 属性来将节点插入到不同的 slot 上。

  1. <!-- 引用组件的页面模板 -->
  2. <view>
  3. <detailM>
  4. <!-- 这部分内容将被放置在组件 <slot name="before"> 的位置上 -->
  5. <view slot="before">这里是插入到组件slot name="before"中的内容</view>
  6. <!-- 这部分内容将被放置在组件 <slot name="after"> 的位置上 -->
  7. <view slot="after">这里是插入到组件slot name="after"中的内容</view>
  8. </detailM>
  9. </view>

4,组件样式

组件对应 wxss 文件的样式,只对组件wxml内的节点生效。编写组件样式时,需要注意以下几点:

  • 组件和引用组件的页面不能使用id选择器(#a)、属性选择器([a])和标签名选择器,请改用class选择器。
  • 组件和引用组件的页面中使用后代选择器(.a .b)在一些极端情况下会有非预期的表现,如遇,请避免使用。
  • 子元素选择器(.a>.b)只能用于 view 组件与其子节点之间,用于其他组件可能导致非预期的情况。
  • 继承样式,如 font 、 color ,会从组件外继承到组件内。
  • 除继承样式外, app.wxss 中的样式、组件所在页面的的样式对自定义组件无效(除非更改组件样式隔离选项)。
  1. #a { } /* 在组件中不能使用 */
  2. [a] { } /* 在组件中不能使用 */
  3. button { } /* 在组件中不能使用 */
  4. .a > .b { } /* 除非 .a 是 view 组件节点,否则不一定会生效 */

除此以外,组件可以指定它所在节点的默认样式,使用 :host 选择器(需要包含基础库 1.7.2 或更高版本的开发者工具支持)。

代码示例:

  1. :host {
  2. color: red;
  3. }

 

这里只是简单的列举了一些微信小程序slot的使用方法,了解更多可查看官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/88324
推荐阅读
相关标签
  

闽ICP备14008679号