미니 프로그램의 슬롯과 상위-하위 구성 요소 간의 여러 통신 방법에 대한 간략한 분석

青灯夜游
풀어 주다: 2021-11-04 10:16:17
앞으로
3013명이 탐색했습니다.

이 글에서는 WeChat 애플릿의 슬롯과 부모-자식 구성 요소 통신의 여러 방법을 소개하겠습니다. 도움이 되길 바랍니다!

미니 프로그램의 슬롯과 상위-하위 구성 요소 간의 여러 통신 방법에 대한 간략한 분석

오늘은 미니 프로그램에서 슬롯과 부모-자식 컴포넌트 간의 통신에 대해 살펴보고, vue와 어떤 차이점이 있는지 살펴보겠습니다. [관련 학습 추천 :미니 프로그램 개발 튜토리얼]

1. 슬롯

1.

사용자 정의 구성 요소의wxml구조에서 구성 요소 사용자wxml结构中,可以提供一个 节点(插槽),用于承载组件使用者提供的wxml结构

미니 프로그램의 슬롯과 상위-하위 구성 요소 간의 여러 통신 방법에 대한 간략한 분석

其实插槽, 说的通俗一些, 就是子组件挖坑,父组件填坑的过程。由父组件在使用子组件的时候, 决定子组件内部的某一些布局展示

  • 子组件通过挖坑
  • 父组件通过组件标签中间的内容来填坑

2. 单个插槽

在小程序中,默认每个自定义组件中只允许使用一个slot占位,这种个数上的限制叫做单个插槽

  • 默认情况下,一个组件的wxml中只能有一个slot
  • 需要使用多slot时,可以在组件js中声明启用
  • 注意:小程序中目前只有默认插槽和多个插槽,暂不支持作用域插槽

代码如下(示例):

  这里是组件的内部节点       这里是插入到组件slot的内容 
로그인 후 복사

3. 启动多个插槽

在小程序的自定义组件中,需要使用多 插槽时,可以在组件的.js文件中

代码如下(示例):

Component({ options: { multipleSlots: true // 在组件定义时的选项中启用多 slot 支持 }, properties: { /* ... */ }, methods: { /* ... */ } })
로그인 후 복사

4. 定义多个插槽

可以在组件的.wxml中使用多个 标签,以不同的name

미니 프로그램의 슬롯과 상위-하위 구성 요소 간의 여러 통신 방법에 대한 간략한 분석wxml구조를 호스팅하기 위해 노드(슬롯)를 제공할 수 있습니다. ="https://img.php.cn/upload/image/578/865/189/1635817685891354.png" title="1635817685891354.png" alt="미니 프로그램의 슬롯과 상위-하위 구성 요소 간의 여러 통신 방법에 대한 간략한 분석"/>

실제 슬롯이라고 하더군요 더 일반적인 버전은 하위 구성 요소가 구멍을 파고 상위 구성 요소가 구멍을 채우는 과정입니다. 상위 구성 요소가 하위 구성 요소를 사용할 때 하위 구성 요소 내부의 레이아웃 표시를 결정합니다

하위 구성 요소는 구멍을 뚫습니다

상위 구성 요소는 구성 요소 태그 중간에 있는 콘텐츠를 통해 구멍을 채웁니다

2 . 단일 슬롯
  • JSON미니 프로그램에서는 기본적으로 각 사용자 정의 구성 요소에 하나의슬롯자리 표시자가 허용됩니다. 이 수 제한을 단일 슬롯이라고 합니다.

  • 기본적으로 하나입니다. 구성 요소의wxml

    여러슬롯을 사용해야 하는 경우 구성 요소에서 사용할 수 있습니다. js활성화하는 명령문
  • 참고this.selectComponent(): 현재 미니 프로그램에는 기본 슬롯과 여러 개의 슬롯만 있으며 범위 슬롯은 아직 지원되지 않습니다

코드는 다음과 같습니다(예):

    这是一段固定的文本内容   
로그인 후 복사
3. 다중 슬롯 시작

  • 미니 프로그램의 사용자 정의 구성 요소에서 다중 슬롯을 사용해야 하는 경우.js파일에 다음 코드(예제)를 추가할 수 있습니다. 구성 요소:
  • // 父组件的 data 节点 data: { count: 0 } // 父组件的wxml 结构  ~~ 父组件中,count值为:{{count}}
    로그인 후 복사

4. 여러 슬롯 정의
구성 요소의 .wxml에서 여러 태그를 사용하여 이름이 다른 여러 슬롯을 구분할 수 있습니다. 코드는 다음과 같습니다(예):

// 子组件的 properties 节点 properties: { count: Number } // 子组件的 wxml 结构 子组件中,count值为:{{count}}
로그인 후 복사

2. 상위-하위 컴포넌트 통신

1. 상위-하위 컴포넌트 통신 방법

  • 父组件js中,定义一个函数,这个函数即将通过自定义事件的形式,传递给子组件
  • 父组件wxml中,通过自定义事件的形式,将步骤 1 中定义的函数引用,传递给子组件
  • 子组件js中,通过调用this.triggerEvent('自定义事件名称', {/* 参数对象 */}),将数据发送到父组件
  • 在父组件的js中,通过e.detail获取到子组件传递过来的数据

4. 事件绑定的核心实现代码

  • 步骤1: 在父组件的js中,定义一个函数,这个函数即将通过自定义事件的形式,传递给子组件

代码如下(示例):

// 父组件中定义 syncCount 方法 // 将来,这个方法会被传递给子组件,供子组件进行调用 syncCount() { console.log('syncCount') },
로그인 후 복사
  • 步骤 2:在父组件的wxml中,通过自定义事件的形式,将 步骤 1 中定义的函数引用,传递给子组件

代码如下(示例):

   
로그인 후 복사
  • 步骤 3:在子组件js中,通过调用this.triggerEvent('自定义事件名称', {/* 参数对象 */})
  • 속성 바인딩 상위 구성요소에 데이터를 하위 구성요소의 지정된 속성으로 설정하는 데 사용됩니다.
호환되는 데이터만 설정할 수 있습니다(데이터만 전달할 수 있고 메서드는 전달할 수 없음)

이벤트 바인딩 하위 구성 요소가 상위 구성 요소에 데이터를 전달하는 데 사용됩니다. 모든 데이터(배열 및 메서드 포함)를 전달할 수 있습니다.구성 요소 인스턴스 가져오기 상위 구성 요소는 를 통해 하위 구성 요소 인스턴스 개체를 얻을 수도 있으므로 하위 구성 요소2 패스 데이터의 모든 데이터 및 메서드에 직접 액세스할 수 있습니다. 속성 바인딩은 부모에서 자식으로 값을 전송하는 데 사용되며 일반적인 유형의 데이터만 전달할 수 있습니다. 메서드는 자식 구성 요소에 전달할 수 없습니다(예):
// 子组件的wxml结构 子组件中,count值为:{{count}}  // 子组件中的 js 代码 methods: { addCount() { this.setData({ count: this.properties.count + 1 }) this.triggerEvent('sync', {value: this.properties.count}) } }
로그인 후 복사
로그인 후 복사
데이터 수락 하위 구성 요소가 속성에 있습니다. 노드에서 해당 속성을 선언하고 사용합니다. 코드는 다음과 같습니다. 통과했다. 사용 단계는 다음과 같습니다. 상위 구성 요소js에서 함수를 정의합니다. 이 함수는 a 형식으로 하위 구성 요소에 전달됩니다. custom event < code>상위 컴포넌트의 wxml에서 1단계에서 정의한 함수 참조를 커스텀 이벤트 형식으로 하위 컴포넌트에 전달합니다 하위 구성요소js에서는 this.triggerEvent('custom event name', {/* 매개변수 객체*/}) 상위 컴포넌트의 js에서 e.detail4을 통해 하위 컴포넌트가 전달한 데이터를 가져옵니다.4 이벤트 바인딩의 핵심 구현 코드 1단계: 상위 구성 요소의 js에서 함수를 정의합니다. 이 함수는 맞춤 이벤트 형식으로 하위 구성 요소에 전달됩니다.코드는 다음과 같습니다( 예):
syncCount(e) { // console.log(e.detail.value) this.setData({ count: e.detail.value }) }
로그인 후 복사
로그인 후 복사
2단계: 상위 구성 요소의 wxml에서 1단계에서 정의한 함수 참조를 사용자 정의 이벤트 형식으로 하위 구성 요소에 전달합니다.코드는 다음과 같습니다. 다음과 같습니다(예):
// wxml结构   getChild() { // 按钮的tap事件处理函数 // 切记下面参数不能传递标签选择器 'my-test3',不然返回的是 null const child = this.selectComponent('.customA') // 也可以传递 id 选择器 #cA child.setData({ count: child.properties.count + 1 }) // 调用子组件的 setData 方法 child.addCount() // 调用子组件的 addCount 方法 }
로그인 후 복사
로그인 후 복사
3단계: 하위 구성요소js에서 this.triggerEvent('custom event name', {/* 매개변수를 호출합니다. object*/})< /code>, 상위 구성 요소에 데이터 보내기 코드는 다음과 같습니다(예):
// 子组件的wxml结构 <text>子组件中,count值为:{{count}}</text> <button type="primary" bindtap="addCount">+1</button> // 子组件中的 js 代码 methods: { addCount() { this.setData({ count: this.properties.count + 1 }) this.triggerEvent(&#39;sync&#39;, {value: this.properties.count}) } }
로그인 후 복사
로그인 후 복사
  • 步骤 4:在父组件的 js中,通过 e.detail获取到子组件传递过来的数据

    代码如下(示例):

    syncCount(e) { // console.log(e.detail.value) this.setData({ count: e.detail.value }) }
    로그인 후 복사
    로그인 후 복사

    5. 使用 selectComponent 获取组件实例

    父组件如何获得子组件实例?

    可在父组件里调用this.selectComponent("id或class选择器"),获取子组件的实例对象,从而直接访问子组件的任意数据和方法。调用时需要传入一个选择器,例如 this.selectComponent(".my-component")

    代码如下(示例):

    // wxml结构   getChild() { // 按钮的tap事件处理函数 // 切记下面参数不能传递标签选择器 'my-test3',不然返回的是 null const child = this.selectComponent('.customA') // 也可以传递 id 选择器 #cA child.setData({ count: child.properties.count + 1 }) // 调用子组件的 setData 方法 child.addCount() // 调用子组件的 addCount 方法 }
    로그인 후 복사
    로그인 후 복사

    更多编程相关知识,请访问:编程入门!!

    위 내용은 미니 프로그램의 슬롯과 상위-하위 구성 요소 간의 여러 통신 방법에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:juejin.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!