• 微信小程序---组件开发与使用


    一、前言

            最近项目上需要用到抽离的组件来实现一些功能。现在将组件使用过程中的遇到的一些问题进行分享。

    二、父页面引用子组件及使用

           1、引用

             在父页面的.json文件中,添加上组件。如下代码所示,“usingComponents”的值是一个对象,里面添加子组件。其中冒号前面的为子组件的名字(用在父页面中,可自定义),冒号后面的是子组件的路径。

    1. {
    2. "usingComponents": {
    3. "rylist":"../../../components/zylist/zylist",
    4. "inputContent":"../../../components/inputContent/inputContent",
    5. "tips":"../../../components/tips/tips"
    6. },
    7. "navigationBarTitleText": "住院记录"
    8. }

            2、使用

            在父页面的.wxml文件中直接使用定义的组件名称,即可完成组件的使用

    <inputContent>inputContent>

    三、父页面给子组件传参

            1、传参       

            如果是父页面给子组件传参,那么仅需要在子组件所在的标签上添加上需要传递的名字及值即可。如下述代码所示,userinfo即为要传递的参数名,{{userinfo}}为参数值

      <inputContent id="inputContent" userinfo="{{userinfo}}">inputContent>

            2、接收参数

            子组件在properties属性列表中,接收父页面传递的参数。该值是一个对象类型,可以指定数据类型及默认值及其他,这里就不一一举例。

    1. /**
    2. * 组件的属性列表
    3. */
    4. properties: {
    5. userinfo: {
    6. type: Object,
    7. value: null
    8. }
    9. },

            子组件在其所在的wxml文件中直接使用该值即可。(就跟正常页面使用data中对象类型的值一样的使用方式)

    四、子组件给父页面传参

            子组件可以通过调用父页面方法的方式给父页面传参。

    父页面代码:

    id="inputContent" bind:addUser="addUser" bind:cancle="cancle">

    子组件代码:

    1. var user = {
    2. xm: xm,
    3. sfzhm: sfzhm,
    4. openid: app.globalData.openID,
    5. }
    6. this.triggerEvent("addUser", JSON.stringify(user))

            子组件使用this.triggerEvent("方法名","参数')触发父页面中的方法,并传参参数;

            父页面使用bind:方法名="父页面中的方法名"的方式进行接收。

    父页面中的方法会有一个形参,比如e,用来接收从子组件传递的参数。如下代码:

    1. //新增用户点击按钮
    2. addUser: function (e) {
    3. var that = this;
    4. if (e != undefined) {
    5. var type = e.type;
    6. //当从子组件传值
    7. if (type == "addUser") {
    8. var userInfo = e.detail;
    9. //新增用户信息
    10. Util.addZyUser(userInfo)
    11. }
    12. }
    13. that.setData({
    14. showPopup: !that.data.showPopup
    15. })
    16. },

    五、其他

            ① 如果需要做弹窗效果,可以通过wx:if=”{{show}}“的方法来控制显隐。

            ② 后续补充……

  • 相关阅读:
    优维EasyOps®全平台又一波新功能上线,操作体验更带劲
    Node.js精进(6)——文件
    企业应用现代化实用教程 | 如何快、准、狠地进行应用容器化改造?
    【视觉基础篇】15 # 如何用极坐标系绘制有趣图案?
    易云维医院后勤综合管理平台为医院智慧后勤的建设与发展做出贡献
    Google Earth Engine(GEE)——提取sentinel-5p中NO2数据下载导出Google硬盘,可通过链接直接下载到电脑
    动态规划-线性DP问题总结(一)
    国标28181-2022检测内容GB28181-2022检测内容
    JavaScript基础
    Debezium系列之:记录mariadb数据库删除多张临时表debezium解析到的消息以及解决方法
  • 原文地址:https://blog.csdn.net/weixin_44431073/article/details/122865499