鴻蒙期末項目(3)

服務器搭建完成之后,編寫了諸多api用于數據傳輸工作(略)

編寫完成之后,回到鴻蒙開發工具,開始編寫搜索頁面的代碼。

打開搜索頁面時,先會展示歷史搜索記錄(如果有的話),然后會根據熱門搜索向用戶推薦搜索內容。當用戶點擊歷史搜索或者熱門搜索的標簽或者手動輸入搜索內容并點擊搜索時,搜索提示將會消失,并展示搜索結果。

在編寫的過程中遇到了一個問題:

@State search: boolean = false;
onSearch(textInput) {this.search = true;
}
?
build() {SearchCard({ onSearch: this.onSearch })if(!this.search) {...}
}

將函數作為參數傳遞給子組件,子組件調用該函數并改變了響應式變量的值,但是卻沒有引起重繪。具體原因未知,但是可以將響應式變量使用@Link傳入子組件中,在子組件中修改變量的值,這樣就可以觸發響應重繪。

搜索頁面效果展示(數據僅為樣例):

當用戶搜索出來這些列表之后,點某個商店可以進入商店詳情頁并展示該商店所售賣的單品,而點某個單品可以進入商店并滾動到單品所在地。同時,數據庫中還包含了單品所屬類別,所以詳情頁可以按照類別來規劃單品。

設計頁面如下

遇到的問題

在父組件中定義函數,并將函數傳給子組件,子組件調用函數時報錯

錯誤原因:子組件調用函數時找不到函數中this所指的定義在父組件中的數據,所以在傳遞函數時需要用 .bind(this) 將this引用一同傳遞過去。

接下來來實現購物車界面,此界面參考美團購物車界面:

可以看到,同一家商店的商品會被歸類到一個卡片中,每個商品前都有選擇框,每個商店卡片頭部也有選擇框控制是否選擇自家的所有商品,同時,在頁腳處,有一個全局的選擇框控制是否全選商品;當點擊頭部的編輯按鈕時,頁尾的結算按鈕會變成刪除按鈕,刪除所有選中的商品。

本人實現該界面的方法是:頁首頁腳單獨編寫兩個組件Header、Footer來控制,隨后通過算法分類出每個出現的商店和商品,通過ForEach渲染出相應的卡片組件StoreCard,在卡片中再次ForEach渲染出子組件ProductCard。然而考慮到還需要實現選擇功能,所以使用@Observed修飾相關類后通過@ObjectLink傳遞給子組件。

中間遇到了一點小問題:

在這個卡片中,預想的效果應當是:

  • 當點擊商店名旁邊的選擇框時,應當全選或全不全所有該商店的商品。

  • 當未點擊商店名旁的選擇框而是手動選擇了全部商品,此時商店選擇框應當自動被勾選

  • 當全選了商店的商品時,若手動取消了某個商品的選擇,應當自動取消勾選商店的全選框

最初我為商店的全選按鈕添加了 onChange 事件:

 .onChange((value) => {for (let index = 0; index < this.storeItem.child.length; index++) {this.storeItem.child[index].selected = value;}})

這樣就可以實現點擊全選后選擇所有商品。但是當測試上述第三個功能時,子組件的改變引起了父組件單選框狀態的改變,此時會觸發這個 onChange 函數,取消一個商品的選擇,導致所有不相關的商品一同被取消了選擇。

解決方法是:將 onChange 改為 onClick 事件,原理很簡單,只有當用戶點擊全選按鈕時才會觸發所有商品的全選/全不選方法,所以改為onClick可以避免程序修改selected 的值而觸發事件。

最后編寫個人主頁見面,初步實現如下:

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

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

相關文章

Kafka入門到精通(四)-SpringBoot+Kafka

一丶IDEA創建一個空項目 二丶添加相關依賴 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springf…

SQL 查詢中 (+) 符號的含義

您已經很好地解釋了 SQL 查詢中 () 符號的含義&#xff0c;它確實用于表示左外連接&#xff08;LEFT OUTER JOIN&#xff09;&#xff0c;這是 SQL 中的一種連接操作。以下是對您提供的信息的補充和完善&#xff1a; ### 左外連接&#xff08;LEFT OUTER JOIN&#xff09;&…

hudi系列-schema evolution(一)

hudi+flink在非schema on read模式下也表現出了支持一部分的schema evolution功能,本篇中測試一下在非schema on read模式下,發生各種列變更情況時數據寫入與讀取情況。 flink 1.14.5hudi 0.13.1mor表思路: 選擇mor表是因為它的數據文件有avro和parquet兩種格式,能覆蓋得更…

java中常用集合(邊補充)

java中開發常用集合&#xff08;邊補充&#xff09; 一、單列集合Collection1.1List接口1.1.1 ArrayList1.1.2 LinkedList1.1.3 Vector&#xff08;線程安全&#xff09;1.1.4 CopyOnWriteArrayList&#xff08;線程安全&#xff09; 1.2 Set接口1.2.1 HashSet1.2.2 LinkedHash…

用戶訂單管理API:輕松管理,購物無憂

在當今數字化時代&#xff0c;電子商務已經成為人們購物的首選方式。與傳統的實體店相比&#xff0c;電商的優勢在于便捷、快速、多樣化等特點&#xff0c;使得更多的消費者選擇了通過網絡購物。而作為電商平臺&#xff0c;如何提供更好的購物體驗&#xff0c;是每個平臺都需要…

企業工程項目管理系統源碼:Java版源碼解析

一、項目概述 鴻鵠工程項目管理系統是基于Spring Cloud、Spring Boot、Mybatis、Vue和ElementUI技術棧&#xff0c;采用前后端分離架構構建的工程管理軟件。它旨在應對企業快速發展中的管理挑戰&#xff0c;提升工程管理效率&#xff0c;減輕工作負擔&#xff0c;加速信息處理…

一次關于k8s的node節點NotReady的故障排查

master現象 分析 kubectl get nodes -A 看了下pod的狀態&#xff0c;好多CrashLoopBackOff kubectl get nodes -o wide 定位到那個具體node的IP地址&#xff0c;登錄對應的IP去查看為什么會這樣 node節點 journalctl -xe -f -u kubelet 查看此節點的 kubelet 服務&#xff…

基于SpringBoot的藏區特產銷售平臺

你好呀&#xff0c;我是計算機學姐碼農小野&#xff01;如果有相關需求&#xff0c;可以私信聯系我。 開發語言&#xff1a; Java 數據庫&#xff1a; MySQL 技術&#xff1a; SpringBoot框架 工具&#xff1a; MyEclipse 系統展示 首頁 個人中心 特產信息管理 訂單管…

華寬通中標長沙市政務共性能力建設項目,助力智慧政務建設新飛躍

在數字化浪潮的推動下&#xff0c;長沙市政府正積極擁抱智慧城市建設&#xff0c;以科技力量提升政務服務效能。華寬通憑借其卓越的技術實力與豐富的項目經驗&#xff0c;成功中標長沙市政務共性能力建設項目&#xff0c;這無疑是對華寬通在智慧城市領域實力的高度認可。 華寬…

huggingface_hub 設置國內鏡像

要設置HuggingFace Hub的國內鏡像&#xff0c;你可以按照以下步驟進行操作&#xff0c;以確保從國內鏡像站點下載Hugging Face模型和數據集。 1. 安裝依賴 首先&#xff0c;確保你已經安裝了huggingface_hub庫。如果沒有&#xff0c;可以通過pip進行安裝&#xff1a; bash復制…

背部筋膜炎最有效的治療方法

背部筋膜炎的引起原因可以歸結為多個方面&#xff0c;以下是詳細的分點表示和歸納&#xff1a; 1、慢性勞損&#xff1a;長時間使用背部&#xff0c;如經常按摩背部&#xff0c;會導致筋膜老化、發炎&#xff0c;進而引發背部筋膜炎。癥狀可能包括背部疼痛、痙攣、肌肉無力感等…

Python 判斷for循環最后一次的6種方法

在Python中&#xff0c;通常我們不會直接判斷for循環是否正在執行最后一次迭代&#xff0c;因為Python的for循環是基于可迭代對象的&#xff0c;它不知道也不關心迭代的內部狀態&#xff08;比如當前是第幾次迭代&#xff09;。但是&#xff0c;我們可以使用一些技巧來間接地實…

uboot環境變量操作命令setenv和saveenv

uboot啟動的時候會將環境變量從flash讀取到DRAM中,使用命令 setenv修改的是DRAM中環境變量,修改以后要使用saveenv命令將修改 后的環境變量保存到flash中,否則的話uboot下一次重啟會繼續使用以前的環境變量值.setenv setenv - set environment variables Usage: setenv seten…

LeetCode.295數據流的中位數詳解

問題描述 中位數是有序整數列表中的中間值。如果列表的大小是偶數&#xff0c;則沒有中間值&#xff0c;中位數是兩個中間值的平均值。 例如 arr [2,3,4] 的中位數是 3 。例如 arr [2,3] 的中位數是 (2 3) / 2 2.5 。 實現 MedianFinder 類: MedianFinder() 初始化 Medi…

Advantest 93000測試機中CLOCK DOMAIN 詳解

愛德萬測試&#xff08;Advantest&#xff09;的V93000系列測試系統是一個高度模塊化和可擴展的平臺&#xff0c;專為復雜和高性能的半導體器件測試而設計&#xff0c;包括系統級芯片&#xff08;SoC&#xff09;、存儲器、射頻&#xff08;RF&#xff09;和混合信號器件等。在…

剪畫小程序:從失業到自媒體:37歲的勇敢轉身!

37歲啦&#xff0c;按說這年紀工作該穩穩當當&#xff0c;家庭也和和美美。可誰能想到&#xff0c;我竟然失業了&#xff01;當時啊&#xff0c;心里頭那叫一個迷茫、焦慮&#xff0c;感覺天都要塌下來了。 可日子還得過呀&#xff0c;總不能就這么被生活給打倒&#xff01;現在…

白敬亭章若楠甜度報表的難哄大師

#白敬亭章若楠&#xff0c;甜度爆表的難哄大師#&#x1f389;&#x1f389;&#x1f389;各位小伙伴們&#xff0c;你們還記得那個讓我們心跳加速、嘴角上揚的CP組合嗎&#xff1f;沒錯&#xff0c;就是白敬亭和章若楠&#xff01;他們可是憑借一部新劇&#xff0c;再次讓我們感…

antd中Select大數據分頁觸底刷新處理優化

平時使用antd中Select的下拉一般就幾十幾百條&#xff0c;這時候直接使用組件模糊查詢就能實現大部分業務場景需求。 今天遇到一個需要模糊查詢并且總量上萬條的下拉框&#xff0c;如果一次性懟上去上萬條&#xff0c;會造成瀏覽器卡頓。所以這邊采用后端分頁&#xff0c;前端…

希喂生骨肉凍干值得入手嗎?拯救瘦弱、增強抵抗力最強主食測評!

希喂生骨肉凍干值得入手嗎&#xff1f;很多小姐妹覺著自家貓咪太瘦了、體質不咋好&#xff0c;換季還敏感、掉毛、不吃東西&#xff0c;聽說生骨肉凍干好吸收、營養好&#xff0c;可以改善體質、拯救瘦弱、增強抵抗力&#xff0c;為了圖省事&#xff0c;開始盲入生骨肉凍干&…

盲盒小程序:線上盲盒發展機遇

盲盒已經成為了當下年輕人的潮玩首選方式。隨著二次元、影視行業的快速發展&#xff0c;給盲盒提供了各種新的發展方向&#xff0c;盲盒商品也在不斷創新&#xff0c;種類豐富多樣。玩家在拆盲盒時隨機獲得某一商品&#xff0c;具有驚喜感和刺激性。 目前&#xff0c;隨著小程…