小程序--组件通信

news/2024/7/20 2:13:09 标签: 小程序, 前端, javascript

一、父传子

        与vue利用props类似,小程序是利用自定义属性:properties

javascript">// components/my-nav/my-nav.js
Component({
  // 小程序组件默认样式是隔离,addGlobalClass设置为true可允许外部修改样式
  options: {
    addGlobalClass: true,
    // 只要使用到具名插槽,都需要将multipleSlots设置为true
    multipleSlots: true
  },
  externalClasses: ["custom-class"],
  // 内部数据
  data: {
    statusBarHeight: 0
  },
  // 外部数据--父传子
  properties: {
    // back: Boolean
    back: {
      type: Boolean,
      value: false
    },
    delta: {
      type: Number,
      value: 1
    }
  },
  // 生命周期
  lifetimes: {
    created(){},
    attached() {
      const { statusBarHeight } = wx.getSystemInfoSync()
      console.log(wx.getSystemInfoSync())
      console.log(statusBarHeight)
      this.setData({
        statusBarHeight: statusBarHeight
      })
    }
  }
})
<view class="navigation-bar custom-class" style="padding-top: {{statusBarHeight}}px;">
  <view class="navigation-bar-title title-class">
    <text class="back-text" wx:if="{{ back }}" open-type="navigateBack" delta="{{ delta }}">返回</text>
    <slot name="left"></slot>自定义标/题<slot name="right"></slot>
  </view>
</view>
<app-nav custom-class="nav_title" back="{{ true }}" >
  <text slot="left">◀</text>
  <text slot="right">▶</text>
</app-nav>

 

二、子传父

        类似vue使用$emit方法,小程序利用triggerEvent和bind:自定义事件方法向父组件传递参数。

        注意:小程序组件中的方法,要写在js的methods中 

javascript">// components/my-nav/my-nav.js
Component({
  // 小程序组件默认样式是隔离,addGlobalClass设置为true可允许外部修改样式
  options: {
    addGlobalClass: true,
    // 只要使用到具名插槽,都需要将multipleSlots设置为true
    multipleSlots: true
  },
  externalClasses: ["custom-class"],
  // 内部数据
  data: {
    statusBarHeight: 0
  },
  // 外部数据--父传子
  properties: {
    // back: Boolean
    back: {
      type: Boolean,
      value: false
    },
    delta: {
      type: Number,
      value: 1
    }
  },
  methods: {
    onTap() {
      // this.triggerEvent('自定义事件',参数)
      this.triggerEvent('getBarHeight',this.data.statusBarHeight)
    }
  },
  // 生命周期
  lifetimes: {
    created(){},
    attached() {
      const { statusBarHeight } = wx.getSystemInfoSync()
      console.log(wx.getSystemInfoSync())
      console.log(statusBarHeight)
      this.setData({
        statusBarHeight: statusBarHeight
      })
    }
  }
})
javascript"><view class="navigation-bar custom-class" style="padding-top: {{statusBarHeight}}px;">
  <view class="navigation-bar-title title-class">
    <text class="back-text" wx:if="{{ back }}" open-type="navigateBack" delta="{{ delta }}">返回</text>
    <slot name="left" bind:tap="onTap"></slot>自定义标题<slot name="right"></slot>
  </view>
</view>
<!-- 页面注册自定义组件 -->
<!-- <page-search /> -->
<app-nav custom-class="nav_title" back="{{ true }}" bind:getBarHeight="getBarHeightFn" >
  <text slot="left">◀</text>
  <text slot="right">▶</text>
</app-nav>
javascript">// pages/component/index.js
Page({
  getBarHeightFn(e) {
    console.log(e.detail)
  }
})

 

 

 

 


http://www.niftyadmin.cn/n/5387299.html

相关文章

vulnhub靶场之Deathnote

一.环境搭建 1.靶场描述 Level - easy Description : dont waste too much time thinking outside the box . It is a Straight forward box . This works better with VirtualBox rather than VMware 2.靶场下载 https://www.vulnhub.com/entry/deathnote-1,739/ 3.启动环…

小程序--应用生命周期

小程序的应用周期处理逻辑都写在app.js中。 一、onLaunch 小程序启动时&#xff08;初始化完成&#xff09;执行&#xff0c;只执行一次。 常用于小程序更新&#xff0c;获取启动参数&#xff0c;获取场景值。 二、onShow 小程序启动&#xff0c;或从后台切换至前台时执行。 …

如何做到表中字段的值用查询接口中实体类不对应的属性名来接收

我们可能会遇到这样的情况&#xff0c;某个查询接口如getAllUser获取所有用户信息的接口。其中有两个字段name和age&#xff0c;正常我们的接口查询后就是返回"name"&#xff1a;“xxx”&#xff0c;“age”&#xff1a;"xx"这类型的数据。但是前端说我需要…

代码随想录算法训练营第二十五天|Leetcode216 组合总和III、Leetcode17 电话号码的字母组合

代码随想录算法训练营第二十五天|Leetcode216 组合总和III、Leetcode17 电话号码的字母组合 ● Leetcode216.组合总和III● 解题思路● 代码实现 ● Leetcode17 电话号码的字母组合● 解题思路● 代码实现 ● Leetcode216.组合总和III 题目链接&#xff1a;Leetcode216.组合总和…

C#_各式各样的参数(引用参数、输出参数、数组参数、具名参数、可选参数)

引用参数 值参数和引用参数的区别在于传参时是否会创建参数副本&#xff1a;值参数不会创建副本&#xff0c;而引用参数会创建副本。 换言之&#xff0c;值类型参数的参数与实体之间无直接关联&#xff0c;修改参数不会对实体产生影响&#xff1b;引用类型参数的参数与实体可视…

Tomcat多实例配置与应用的深入讲解

Tomcat多实例配置与应用的深入讲解 一、概述 Tomcat是一款广泛使用的Web服务器&#xff0c;它可以同时处理多个HTTP请求。在某些场景下&#xff0c;我们需要在同一台服务器上部署多个Tomcat实例&#xff0c;以满足不同的业务需求。本文将详细介绍如何配置Tomcat多实例&#x…

【计算机网络】网络基础知识

一. 网络发展史 独立模式&#xff08;单机模式&#xff09;&#xff1a;计算机之间相互独立&#xff0c;各自拥有独立的数据。 网络互连&#xff1a;将多台计算机连接在一起&#xff0c;完成数据共享。 随着时代的发展&#xff0c;越来越需要计算机之间进行互相通信&#…

C/C++ PrefixToNetmask、NetmaskToPrefix(网络掩码、Prefix 互转)

作用&#xff1a; Netmask&#xff1a;255.255.255.0 互转 Prefix&#xff1a;24 新实现&#xff1a; static int NetmaskToPrefix(unsigned char* bytes, int bytes_size) noexcept {if (NULL bytes || bytes_…