微信小程序61~70

1.組件wxml的slot-插槽
  • 在使用基礎組件時,可以在組件中間寫子節點,從而將子節點內容展示到頁面中,自定義組件也可以接收子節點
  • 但是要在組件模板中定義節點,承載組件中間的子節點
  • 需要使用多個插槽時,要在組件.js中聲明啟用,同時給slot添加name屬性來區分不同的slot(具名插槽)
  • 然后給子節點內容添加slot屬性,屬性值是對應的slot的name名稱,來將內容插入對應的slot中。

label和slot中的內容可以二選一

.js中的代碼

Component({option: {multipleSlot: true},
}

頁面page

<custom01><text slot="slot-top">我要顯示到頂部</text>我是子節點內容<text slot="slot-bottom">我要顯示到底部</text>
</custom01>

components組件

<view><slot name="slot-top" /><!-- slot就是用來接收、承接子節點的內容 --><!-- slot只是一個占位符,子節點內容會將slot進行替換 --><view><slot /></view><slot name="slot-bottom" />
</view>
2.組件樣式及注意事項

自定義組件擁有自己的 wxss 樣式,組件 wxss 文件的樣式,默認只對當前組件生效

編寫組件樣式時,需要注意以下幾點:

  1. app.wxss 或頁面的 wxss 中使用了標簽名(view)選擇器(或一些其他特殊選擇器)來直接指定樣式
    這些選擇器會影響到頁面和全部組件,通常情況下這是不推薦的做法
  2. 在自定義的wxss文件中,不允許使用標簽、ID、屬性選擇器,只能用class選擇器
  3. 組件和引用組件的頁面中使用后代選擇器(.a .b)在一些極端情況下會有非預期的表現,如遇,請避免使用
  4. 子元素選擇器(.a>.b)只能用于 view 組件與其子節點之間,用于其他組件可能導致非預期的情況。
  5. 繼承樣式,如 font 、 color ,會從組件外繼承到組件內。
  6. 除繼承樣式外, 全局中的樣式、組件所在頁面的的樣式對自定義組件無效 (除非更改組件樣式隔離選項)
3.組件樣式隔離

自定義組件的樣式只受自身 wxss 的影響,但是有時候我們需要組件使用者的樣式能夠影響到組件,這時候就需要指定特殊的樣式隔離選項 styleIsolation。

有以下取值:

  1. isolated:表示啟用樣式隔離,在自定義組件內外,使用 class 指定的樣式將不會相互影響(一般情況下的默認值)
  2. apply-shared:表示頁面 wxss 樣式將影響到自定義組件,但自定義組件 wxss 中指定的樣式不會影響頁面
  3. shared:表示頁面 wxss 樣式將影響到自定義組件,自定義組件 wxss 中指定的樣式也會影響頁面和其他設置了 apply-shared 或 shared 的自定義組件。
options: {// isolated開啟樣式隔離,是默認值//apply-shared組件使用者樣式能夠影響到自定義組件本身,反之不行// shared表示組件使用者、頁面的wxss樣式能夠影響到自定義組件,反之也可以styleIsolation: "shared"},

4.小程序修改checkbox樣式

在這里插入圖片描述

5.數據監聽器-observers

數據監聽器主要用于監聽和響應任何屬性(properties)和數據(data)的變化,數據變化時 就會發生回調函數,方便開發者進行業務邏輯處理。
數據監聽需要使用-observers字段

Component({/*** 組件的屬性列表*/properties: {label: {type: String,value: "測試"}},/*** 組件的初始數據*/data: {num:10,count: 100,obj: { name: 'tom', age: 10 },arr: [1, 2, 3]},// 用來監聽數據以及屬性是否發生了變化observers: {// key:需要監聽的數據// value:回調函數,形參:最新的數據num: function(newNum) {// 對data中數據進行監聽,如果數據沒有發生,監聽器不會執行console.log(newNum)},// 同時監聽多個數據'num, count': function(newNum, newCount) {console.log(newNum, newCount);},// 支持監聽屬性以及內部數據的變化"obj.name": function(newName) {console.log(newName);},"arr[1]": function(newArr) {console.log(newArr);},// 監聽對象中所有屬性變化// 用通配符"obj.**": function(newObj) {console.log(newObj);},// 與data中不同,只要組件使用者傳遞了數據,監聽器中就能獲取數據"label": function(newLabel) {console.log(newLabel);}},/*** 組件的方法列表*/methods: {// 更新數據updateData () {this.setData({num: this.data.num + 1,count: this.data.count - 1,'obj.name': 'jerry','arr[1]': 666,'label': "最新的標題"})}}
})
6.組件通信-父組件傳值
  1. 在父組件WXML中使用數據綁定的方式向子組件傳遞動態數據
  2. 子組件內部使用properties接收父組件傳遞的數據即可
observers: {// 如過需要properties中的數據賦值給data// 可以使用 observers進行處理checked: function(newChecked) {this.setData({isChecked: newChecked})}}
7.組件通信-子往父傳值
  1. 自定義組件內部使用triggerEvent方法發射一個自定義的事件,同時可以攜帶數據
  2. 自定義組件標簽通過bind方法監聽發射的事件,同時綁定事件處理函數,在事件處理函數中通過事件對象獲取傳遞的數據
 methods: {// 將數據傳遞給子組件sentData () {// 如果需要將數據傳遞給父組件// 需要用triggerEvent發射自定義事件this.triggerEvent('myevent', this.data.num)}}<!-- 需要在自定義組件標簽上通過bind方法綁定自定義事件,同時綁定事件處理函數 -->
<view>{{ num }}</view>
<custom05 bind:myevent="getData" />data: {num : ''},getData (event) {console.log(event);// 可以通過事件對象.detail獲取子組件傳遞給父組件的數據this.setData({num: event.detail})},<button plain type="primary" bindtap="sentData">傳遞數據</button>
8.獲取組件實例

父組件通過this.selectComponent方法,獲取子組件實例對象,這樣就可以訪問子組件的任意數據和方法
this.selectComponent方法在調用時需要傳入一個匹配選擇器selector

getChild () {const res = this.selectComponent('.child')console.log(res);}
9.組件生命周期
  • 組件生命周期:指組件自身的一些鉤子函數,函數在特定的時間節點被觸發
  • 函數要在lifetimes字段內進行聲明
  • 有5個:created, attached, ready, moved, detached

在這里插入圖片描述

Component({lifetimes: {// 組件實例被創建好以后執行// 在組件實例剛剛被創建時執行,注意此時不能調用 setDatacreated () {}, // 組件被初始化完畢,模板解析完成,已經把組件掛載到頁面上attached () {// 一般頁面中的交互會在attached鉤子函數中進行this.setData({})}, // 組件被銷毀detached () {},ready () {}, moved () {}}
})
10.組件所在頁面的生命周期
  • 組件中還有一些特殊的生命周期,其與組件沒有很強的關聯
  • 主要用于組件內部監聽父組件的展示、隱藏狀態、從而方便組件內部執行一些業務邏輯的處理
  • 共四個:show, hide, resize, routeDone, 要在pageLifetimes中聲明

在這里插入圖片描述

pageLifetimes: {// 監聽組件所在頁面展示(后臺切前臺)狀態show () {},// 監聽組件所在頁面隱藏(前臺切后臺,點擊tabbar)狀態hide () {}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913190.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913190.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913190.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

03_性能優化:讓軟件呼吸更順暢

引言 在用戶對軟件響應速度近乎苛刻的今天&#xff0c;性能已成為產品競爭力的核心指標。據Google研究&#xff0c;頁面加載時間每增加1秒&#xff0c;轉化率就會下降20%。本文將從前端、后端、移動端三個維度&#xff0c;揭示性能優化的核心策略與實戰技巧&#xff0c;幫助你打…

LangChain4j 框架模仿豆包實現智能對話系統:架構與功能詳解

系統整體架構設計基于 LangChain4j 框架構建的智能對話系統采用 "前后端分離 大模型中樞" 的三層架構設計&#xff0c;實現了與豆包類似的智能交互體驗。系統架構圖如下所示&#xff1a;┌────────────────────────────────────…

基于uni-app的書法學習管理小程序的設計與實現

一、設計的目的 書法是中華民族傳統文化的瑰寶&#xff0c;更是人類文明的寶貴財富&#xff0c;具有深遠的意義和實價值。在當今數字化時代&#xff0c;隨著信息技術的飛速發展&#xff0c;傳統書法學習模式面臨著諸多挑戰和需要解決的問題。為推動書法學習的現代化轉型&#…

NumPy 函數庫在數學建模中的基本使用方法

一、引言 在數學建模的世界里,我們常常需要處理大量的數據和進行復雜的數值計算。Python 中的 NumPy 庫就像是一位得力的助手,它為我們提供了強大的多維數組對象和豐富的數學函數,讓我們能夠高效地完成各種數值計算任務。接下來,我們將深入探討 NumPy 在數學建模中的基本使…

模塊三:現代C++工程實踐(4篇)第一篇《C++模塊化開發:從Header-only到CMake模塊化》

引言&#xff1a;現代C工程化的核心挑戰&#xff08;終極擴展版&#xff09; 在云計算與物聯網時代&#xff0c;C項目規模呈指數級增長。傳統Header-only開發模式暴露出編譯效率低下、依賴管理混亂、版本沖突頻發等致命問題。本文通過CMake 3.22Conan 2.0工具鏈的深度集成&…

uniapp啟動圖被拉伸問題

記錄下&#xff1a; 安卓手機有不同的規格&#xff0c;很難所有規格都去適配。如果不適配所有機型&#xff0c;那么就會導致部分機型的啟動圖被拉伸。 安卓提供了.9.png圖片格式&#xff0c;允許標注部分拉伸&#xff0c;這樣啟動圖中間的logo就不會被拉伸。 下面2張圖是沒有…

stm32的三種開發方式

以下是針對STM32F103RC實現LED閃爍&#xff08;PC13引腳&#xff09;的三種開發方式示例代碼&#xff0c;每種方式均保持相同的核心邏輯&#xff1a; 1. 寄存器開發方式&#xff08;直接操作寄存器&#xff09; #include "stm32f10x.h"int main(void) {// 1. 開啟G…

SpringBoot問卷調查系統設計與實現

概述 基于SpringBoot開發的問卷調查系統&#xff0c;該系統集成了問卷管理、題目管理等多種功能模塊。 主要內容 核心功能模塊&#xff1a; ??個人信息管理??&#xff1a; 修改密碼個人信息修改 ??問卷管理??&#xff1a; 問卷新增問卷修改問卷刪除 ??題目管理?…

Linux進程管理:從基礎到實戰

在 Linux 系統編程中&#xff0c;進程&#xff08;Process&#xff09; 是操作系統進行資源分配和調度的基本單位。理解進程的概念是掌握系統編程、多任務處理、并發編程的基礎。 目錄 一、什么是進程&#xff1f; 定義&#xff1a; 二、進程的生命周期 示例&#xff1a;查…

工業物聯網中的 Modbus:傳感器與網關通信實戰(二)

四、實戰案例解析 4.1 項目背景與目標 某智能工廠致力于提升生產過程的自動化和智能化水平&#xff0c;對生產線上的各種設備進行實時監控和數據分析。在該工廠的一個生產車間中&#xff0c;存在著大量的傳感器&#xff0c;用于監測設備的運行狀態、環境參數等信息。這些傳感…

飛算 JavaAI 智控引擎:全鏈路開發自動化新圖景

免責聲明: 此文章的所有內容皆是本人實驗測評&#xff0c;并非廣告推廣&#xff0c;并非抄襲。如有侵權&#xff0c;請聯系&#xff0c;謝謝! 文章目錄&#x1f4dd;前言一、飛算 Java AI 智能開發助手簡介1.1何為飛算 Java AI智能助手&#xff1f;2.2 飛算Java AI 直擊開發全場…

MYSQL數據庫(九)MVCC-多版本并發控制

目錄 一 前景導入 1 當前讀 2 快照讀 二 MVCC 1 隱藏字段 2 UndoLog 回滾日志 (1 UndoLog日志 (2 UndoLog版本鏈 3 Read View 面試八股 介紹一下MVCC 一 前景導入 1 當前讀 可使當前事務讀取的是最新版本的數據&#xff0c;讀取時還要保證其他并發事務不能修改當中…

[Pytest] [Part 2]增加 log功能

開始實現需求之前先做個log類&#xff0c;可以給其他模塊使用&#xff0c;也方便以后修改log類的功能和屬性。 使用的是python中的logging包來進行簡單的封裝&#xff0c;具體代碼如下 import logging import sysclass TefLogger:def __init__(self, logger_nameTEST_FRAMEWOR…

NeighborGeo:基于鄰居的IP地理定位(三)

NeighborGeo:基于neighbors的IP地理定位 X. Wang, D. Zhao, X. Liu, Z. Zhang, T. Zhao, NeighborGeo: IP geolocation based on neighbors, Comput. Netw. 257 (2025) 110896, 3. NeighborGeo 本文提出NeighborGeo,利用圖結構學習和有監督對比學習來建立可靠的地標-目標關…

python使用fastmcp包編寫mcp服務端(mcp_server)和mcp客戶端(mcp_client)

安裝fastmcp pip install fastmcp編寫mcp服務端代碼 from fastmcp import FastMCP mcp FastMCP(weather)mcp.tool() def get_weather(city: str):獲取對應城市的天氣:param city: 目標城市:return: 該城市的天氣return f"{city}天氣晴朗&#xff0c;溫度60度&#xff01…

(1)機器學習小白入門 YOLOv:從概念到實踐

(1)機器學習小白入門YOLOv &#xff1a;從概念到實踐 (2)機器學習小白入門 YOLOv&#xff1a;從模塊優化到工程部署 (3)機器學習小白入門 YOLOv&#xff1a; 解鎖圖片分類新技能 目標檢測一直是一個機器學習的一個重要的應用方向。而 YOLOv&#xff08;You Only Look Once&…

Appium 簡介

Appium 是一個開源的移動應用自動化測試框架&#xff0c;用于測試原生應用(native)、混合應用(hybrid)和移動網頁應用(mobile web)。它支持 iOS、Android 和 Windows 平臺。 https://www.bilibili.com/video/BV1R93szkEhi/? App自動化測試&#xff1a;App測試AppiumUiAutomato…

【C語言刷題】第十一天:加量加餐繼續,代碼題訓練,融會貫通IO模式

&#x1f525;個人主頁&#xff1a;艾莉絲努力練劍 ?專欄傳送門&#xff1a;《C語言》、《數據結構與算法》、C語言刷題12天IO強訓、LeetCode代碼強化刷題 &#x1f349;學習方向&#xff1a;C/C方向 ??人生格言&#xff1a;為天地立心&#xff0c;為生民立命&#xff0c;為…

免費版安全性縮水?ToDesk、TeamViewer、向日葵、網易UU遠程訪問隱私防護測評

一、前言 在這個居家辦公、遠程技術支持成為常態的時代&#xff0c;我們經常需要把電腦控制權交給遠方的同事或技術人員。但你想過沒有&#xff0c;那些免費遠程控制軟件&#xff0c;真的能保護好你的隱私嗎&#xff1f; 好用的遠程軟件通常會收費運營&#xff0c;投入經費去開…

nginx部署發布Vite項目

1 引言 在之前的文章《Ubuntu云服務器上部署發布Vite項目》中筆者使用了Vite提供的預覽服務(npm run preview)來在云服務器上發布Web應用。這樣做輕量應用是沒問題的&#xff0c;不過遇到一些專業的問題就不行了&#xff0c;最好還是使用專業的HTTP服務器。除此之外&#xff0…