AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

從 Ant Design 中,學一手復雜組件交互的優秀實踐

來源: 責編: 時間:2024-05-16 09:06:35 146觀看
導讀我們在學習的時候遇到的 Demo 經常都是比較簡單的,但是一旦到了實踐工作中,數據和功能就開始變得復雜了。這個時候許多小伙伴就不知道咋處理了,他可能會把組件寫的非常龐大。不利于維護。我們可以在 antd 中,學習一手最佳

wez28資訊網——每日最新資訊28at.com

我們在學習的時候遇到的 Demo 經常都是比較簡單的,但是一旦到了實踐工作中,數據和功能就開始變得復雜了。這個時候許多小伙伴就不知道咋處理了,他可能會把組件寫的非常龐大。不利于維護。wez28資訊網——每日最新資訊28at.com

我們可以在 antd 中,學習一手最佳實踐,如何把復雜的組件轉化為簡單的組件。wez28資訊網——每日最新資訊28at.com

例如我們有這樣一個復雜交互需求。這是一個樹結構與輸入框結合的交互邏輯 Input + Tree。wez28資訊網——每日最新資訊28at.com

wez28資訊網——每日最新資訊28at.com

在 antd 中,這樣的交互被封裝成為了一個單獨的子組件 TreeSelect。他的妙處就在于,當我們使用該組件時,不需要關注內部的復雜邏輯到底是如何處理的。wez28資訊網——每日最新資訊28at.com

我們只需要關心的問題有三個,第一,Input 和 Tree 結構需要的初始化數據。wez28資訊網——每日最新資訊28at.com

<TreeSelect   treeData={treeData}  defaultValue={}  placeholder="Please select"/>

placeholder 表示沒有任何選中數據時,Input 中的提示信息。可以在組件內部給一個通用默認值,這樣在大多數情況就不需要顯示的傳入了。wez28資訊網——每日最新資訊28at.com

第二,Input 受控屬性 value。wez28資訊網——每日最新資訊28at.com

<TreeSelect   treeData={treeData}  value={}/>

第三,當內部有操作變化,并且需要告知外部時,所需要執行的鉤子函數 onChange。wez28資訊網——每日最新資訊28at.com

<TreeSelect   treeData={treeData}  onChange={}/>

很多時候,我們并不需要受控屬性 value 。這是許多人在使用時可能會不太理解的地方。受控屬性的目的是用于在父組件去控制 TreeSelect 的顯示。但是其實我們可能只是需要從 onChange 中獲取到當前選中的結果,然后將這個結果整合到接口參數中去提交表單。只有當 TreeSelect 中的交互結果,會影響到其他外部組件時,我們才會考慮使用受控組件。wez28資訊網——每日最新資訊28at.com

因此,在使用時,我們需要考慮的是,利用 defaultValue 或者 value 去回顯組件在初始化時的數據。wez28資訊網——每日最新資訊28at.com

然后利用 onChange 獲取得到最新的值即可。wez28資訊網——每日最新資訊28at.com

這里比較有意思的是,當我們把目標關注到 Input 組件時,發現 Input 組件的核心屬性也是這幾個 defalutValue/value/onChange。wez28資訊網——每日最新資訊28at.com

而 tree 組件的核心屬性,也是這幾個 defalutValue/value/onChange。wez28資訊網——每日最新資訊28at.com

因此,我們可以基于這種思路,去封裝復雜業務組件,讓其使用起來變得非常簡單。wez28資訊網——每日最新資訊28at.com

例如,我們有一個配置項名為被選中的學員。在頁面上我們使用一個列表來暫時選中結果列表。wez28資訊網——每日最新資訊28at.com

wez28資訊網——每日最新資訊28at.com

在該結果展示列表中,可以刪除項。wez28資訊網——每日最新資訊28at.com

當需要重新選中時,需要點開一個彈窗,然后彈窗中有一個完整的人員分頁列表。wez28資訊網——每日最新資訊28at.com

大家可以腦補一下。wez28資訊網——每日最新資訊28at.com

我們可以把這一部分統一封裝成一個 TreeSelect 那樣的組件,命名為 PersonnelSelector,其中包括:展示結果的列表組件、彈窗組件、彈窗中的分頁列表組件。wez28資訊網——每日最新資訊28at.com

對于內部而言,構成非常的復雜。wez28資訊網——每日最新資訊28at.com

但是對于外部而言,他的構成就非常簡單,我們只需要通過 value/defaultValue 回顯數據,并且通過 onChange 獲取操作之后的最新選中值即可。wez28資訊網——每日最新資訊28at.com

<PersonnelSelector   value={[{}, {}, {}]}  notallow={}/>

PersonnelSelector 就是我們封裝的業務組件。wez28資訊網——每日最新資訊28at.com

// 簡化版代碼function PersonnelSelector() {  const [selected, setSelected] = useState([])  const [open, setOpen] = useState(false)  const {list} = usePagination(api)  return (    <>      <Table dataSource={selected} />      <Modal show={open}>        <Table dataSource={list} />      </Modal>    </>  )}

總結

這是一種合理抽離子組件的方式,在復雜頁面的交互中非常有用。把局部交互邏輯單獨隔離到子組件中去,而不需要在父組件中去維護彈窗組件等邏輯的狀態,從而讓頁面組件的代碼保持簡潔。wez28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-88339-0.html從 Ant Design 中,學一手復雜組件交互的優秀實踐

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 探索.NET中的定時器:選擇最適合你的應用場景

下一篇: 怎么更好的使用Gradle?

標簽:
  • 熱門焦點
  • JavaScript 混淆及反混淆代碼工具

    介紹在我們開始學習反混淆之前,我們首先要了解一下代碼混淆。如果不了解代碼是如何混淆的,我們可能無法成功對代碼進行反混淆,尤其是使用自定義混淆器對其進行混淆時。什么是混
  • 十個可以手動編寫的 JavaScript 數組 API

    JavaScript 中有很多API,使用得當,會很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對它們進行一次小總結。現在開始吧。1.forEach()forEach()用于遍歷數組接收一參
  • 一篇聊聊Go錯誤封裝機制

    %w 是用于錯誤包裝(Error Wrapping)的格式化動詞。它是用于 fmt.Errorf 和 fmt.Sprintf 函數中的一個特殊格式化動詞,用于將一個錯誤(或其他可打印的值)包裝在一個新的錯誤中。使
  • 企業采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業提供很多的好處,從客戶保留到提高生產力。  CRM軟件用于企業收集客戶互動,以改善客戶體驗和滿意度。  CRM軟件市場規模如今超過580
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生
  • 7月4日見!iQOO 11S官宣:“雞血版”驍龍8 Gen2+200W快充加持

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數亮相,而下半年即將推出的頂級旗艦已經成為了數碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • iQOO Neo8系列今日官宣:首發天璣9200+ 全球安卓最強芯!

    在昨日舉行的的聯發科新一代旗艦芯片天璣9200+的發布會上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品將全球首發搭載這款當前性能最強大的移動平臺
  • 聯想的ThinkBook Plus下一版曝光,鍵盤旁邊塞個平板

    ThinkBook Plus 是聯想的一個特殊筆記本類別,它在封面放入了一塊墨水屏,也給人留下了較為深刻的印象。據有人爆料,聯想的下一款 ThinkBook Plus 可能更特殊,它
  • 由于成本持續增加,筆記本產品價格預計將明顯上漲

    根據知情人士透露,由于材料、物流等成本持續增加,筆記本產品價格預計將在2021年下半年有明顯上漲。進入6月下旬以來,全球半導體芯片缺貨情況加劇,顯卡、處理器
Top