使用-微信开发者工具-实现自定义组件(个人学习)

本文介绍小程序中自定义组件的创建与使用方法,并详细解释了如何实现父组件向子组件及子组件向父组件的数据传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:小程序自定义组件


前言

提示:小程序中常常会有一些通用的模块,这些模块会在多个页面中用到。传统的写法是相同代码,重复多次书写,这样非常繁琐。
面对这个情况,小程序基础库提供了让开发者自己创建组件的特性,称之为“自定义组件”。
可以使代码组织变得简洁灵活。


提示:以下是本篇文章正文内容,下面案例可供参考


一、自定义组件

1.什么是自定义组件

小程序中常常会有一些通用的模块,这些模块会在多个页面中用到。传统的写法是相同代码,重复多次书写,这样非常繁琐。对这个情况,小程序基础库提供了让开发者自己创建组件的特性,称之为“自定义组件”。可以使代码组织变得简洁灵活。

2.自定义组件组成

  • 1)json文件 用于于放置一些最基本的组件配置

  • (2)wxml 文件 组件模版

  • (3)wxss 文件 组件的样式(无法直接使用全局样式,需要通过@import导入)

  • (4)js 文件 组件的 JS 代码,承载组件的主要逻辑


3.使用步骤

.新建自定义组件

* 在根目录新建commponents组件库

在这里插入图片描述

*在组件库中新建header文件夹,在文件夹中右键,选中“新建commponent”自动生成组件内容

在这里插入图片描述

* 组件页面编写

在这里插入图片描述

*组件wxss文件,因为无法直接使用全局样式,需要导入

在这里插入图片描述

*在根目录的pages的index文件夹内(在父组件json文件)index.json里进行引入

在父组件json文件

*在父组件wxml文件中以组件名作为标签使用组件

在父组件wxml文件中以组件名作为标签使用组件

*代码效果

在这里插入图片描述


二、父子组件通信

与Vue父子组件传参原理一样

父传子

1.在父组件中的子组件标签添加属性,给子组件传递数据

在这里插入图片描述

2.子组件在js中通过properties接收,可以指定接收数据类型

在这里插入图片描述

3.输出

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


子传父

1.在父组件的子组件标签自定义事件,传给子组件

在这里插入图片描述

子组件上添加绑定点击事件

在这里插入图片描述

2.子组件用this.triggerEvent(‘父组件自定义事件’, ‘要传递的参数’),触发父组件传过来的自定义事件

在这里插入图片描述

3.父组件自定义事件绑定的函数就会执行,同时接受子组件传过来的数据

在这里插入图片描述

4.点击123显示效果

在这里插入图片描述


# 总结 2010-11-21 北京 阴 初雪🌨🌨🌨感谢老黄同学的慷概受教 黄老邪( ̄y▽, ̄)╭ 牛掰
<think>好的,我现在需要回答用户关于微信小程序中navigation-bar组件和navigate标签在页面跳转时的区别的问题。首先,我要明确这两个组件的基本定义和用途。 根据引用[3]中的例子,navigator标签使用open-type属性来指定跳转类型,比如switchTab用于切换Tab页面。这说明navigator是一个专门用于导航的组件,支持多种跳转方式,如普通页面跳转或Tab切换。而navigation-bar可能是指顶部导航栏组件,但用户提到的navigation-bar可能是指自定义的导航栏组件,或者是微信原生提供的导航栏配置? 接下来,我需要查阅微信小程序的官方文档。微信小程序的导航栏通常通过window字段配置,如引用[2]提到的,可以设置状态栏、导航条等样式。这说明原生的导航栏是全局配置的,而navigation-bar组件可能是一个自定义组件,用于替代原生导航栏,提供更多的自定义功能。 然后,用户想知道这两者在跳转时的区别。navigator标签是页面内的一个元素,用户点击后会触发页面跳转,支持不同的open-type,比如navigate、redirect、switchTab等。而navigation-bar组件如果包含跳转功能,可能需要通过绑定事件来实现,例如在导航栏的按钮上绑定点击事件,然后调用wx.navigateTo等方法进行跳转。 另外,引用[3]中的示例代码显示navigator标签可以直接在wxml中使用,无需编写JS代码,而navigation-bar组件可能需要更多的配置和事件处理。这可能影响开发复杂度和灵活性。 总结区别的话,navigation-bar作为导航栏组件,更侧重于整体导航结构的呈现和样式自定义,而navigator标签是具体的导航元素,用于触发跳转动作。两者的使用场景和配置方式不同,需要根据具体需求选择。 最后,我需要验证这些信息是否准确,确保没有混淆原生导航栏和自定义组件。可能需要检查微信小程序文档,确认navigation-bar是否是官方组件,或者是否为开发者自定义实现。根据现有引用,用户可能指的是自定义的导航栏组件,因此需要强调两者的不同用途和实现方式。</think>### navigation-bar组件与navigator标签的区别 在微信小程序开发中,`navigation-bar`组件和`navigator`标签虽然都涉及页面导航,但功能定位和使用场景有显著差异: --- #### 1. **功能定位** - **navigation-bar** 属于**自定义导航栏组件**,主要用于替代原生导航栏的样式和交互(如沉浸式状态栏、自定义返回按钮等)。它本身不直接提供跳转功能,但可通过绑定事件(如点击返回按钮)调用API实现导航逻辑,例如: ```javascript wx.navigateBack() // 返回上一页 ``` 开发者需要手动编写事件处理函数[^2][^3]。 - **navigator标签** 是微信原生提供的**导航容器标签**,直接实现页面跳转功能。通过`url`属性指定目标页面路径,`open-type`属性定义跳转类型(如普通跳转、Tab切换、重定向等),例如: ```html <navigator url="/pages/home/home" open-type="switchTab">跳转到首页</navigator> ``` 无需编写额外JS代码即可完成跳转。 --- #### 2. **使用场景** - **navigation-bar** 适用于需要**高度定制导航栏样式**的场景,例如: - 修改导航栏颜色、添加自定义图标 - 实现动态标题或交互式按钮(如分享按钮) - 适配异形屏(刘海屏、折叠屏)[^2] - **navigator标签** 适用于**页面内具体元素的跳转**,例如: - 列表项点击跳转详情页 - 按钮跳转到其他功能模块 - Tab栏切换(需配合`open-type="switchTab"`) --- #### 3. **配置方式** - **navigation-bar** 需通过JSON文件配置`window`字段定义全局导航栏样式: ```json { "window": { "navigationBarTitleText": "首页", "navigationBarBackgroundColor": "#FF0000" } } ``` 若使用自定义导航栏组件,则需在页面配置中声明`"navigationStyle": "custom"`。 - **navigator标签** 直接在WXML中声明,通过属性控制行为: ```html <navigator url="/pages/detail/detail" open-type="navigate" hover-class="navigator-hover" >查看详情</navigator> ``` --- #### 4. **性能影响** - **navigation-bar** 自定义导航栏可能增加页面渲染复杂度,需注意性能优化(如图标预加载)。 - **navigator标签** 作为轻量级原生组件,跳转性能更优,尤其适合高频次触发的跳转操作。 --- ### 总结对比表 | 特性 | navigation-bar组件 | navigator标签 | |---------------------|----------------------------|----------------------------| | **核心功能** | 自定义导航栏样式 | 页面跳转 | | **跳转实现** | 需手动绑定事件调用API | 声明式跳转(无需JS代码) | | **配置层级** | 全局或页面级样式配置 | 页面内元素级配置 | | **适用场景** | 沉浸式导航栏、动态标题 | 按钮跳转、Tab切换 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值