」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 不要重新發明輪子!或 Vue 和 React 應用程式的實用程式庫

不要重新發明輪子!或 Vue 和 React 應用程式的實用程式庫

發佈於2024-08-28
瀏覽:264

Don’t reinvent the wheel! Or utility libraries for Vue and React applications

介紹

許多開發人員,當涉及到標準Web 應用程式功能時,例如:儲存和管理布林值、處理按下的按鍵或建立步進器,通常會嘗試找到如何執行這個或那個功能,並且更常見的是,他們找到一種方法從頭開始實現功能。

無須重新發明輪子!

各種框架(React、vue 等)的可重複使用函式庫的創建者和使用者對這種方法有這樣的反應。

對於 Vue—例如,vueuse。 (vue實用函數)

對於React來說,今天最好的一個是全新的、積極支持的reactuse(用於react hooks)

這些庫解決了什麼問題?

它們需要減少開發人員的生活挑戰。提前準備好開發人員在工作中可能需要的所有功能。如果他使用現成的包,他至少可以節省時間,最多可以最大限度地減少在程式碼中發現錯誤或錯誤的可能性,因為每個功能都是單獨測試的。用例實際上是巨大的。在此類庫的幫助下,您可以,例如:

  1. 使用網路套接字
  2. 查詢
  3. 偵測使用者的地理位置
  4. 使用本地儲存
  5. 輕鬆建立模態視窗

這只是所有可能情況的一小部分。

為什麼 VueUse 很酷?

VueUse 是 vue 中最受歡迎的此類庫之一。畢竟,它提供了最基本的可重複使用功能。有些人認為它是建立 Vue 應用程式時的一個標準,沒有它就不可能實現。很難不同意,該庫由兩百多個功能組成,並遵循上述意識形態。

React 的最佳替代方案

雖然稱讚 vueuse 是完美實現一個偉大想法的最佳方式,但我們不應該忘記排名第一的 js 庫/框架——React。而這裡的情況更令人不快。畢竟,React 沒有成熟的、可靠的、廣泛的且唯一的程式庫。不同的開發人員進行了一些嘗試,但其中一個的鉤子太少了(在 React 中它們是鉤子,是的),某處有使用未處理的 api 構建的鉤子。

為了改善這種情況,作為vueuse的替代品,但在react中,出現了reactuse。

讓我們舉個例子,嘗試在庫的幫助下並僅使用普通的 React 建立清單管理。

import { useList } from "@siberiacancode/reactuse";

function App() {
  const { value, set, push, removeAt, insertAt, updateAt, clear, reset } =
    useList(["Pink Floyd", "Led Zeppelin"]);
}
export default App;

我們取得value(陣列值)、set(指派另一個陣列值的函數)、push(向陣列新增值的函數)、removeAt(依索引刪除)、updateAt(依索引變更值)、clear(清除)數組),重置(重置為預設值)
現在,在普通反應上取得所有這些狀態和函數的程式碼:

const [value, setValue] = useState(["Pink Floyd", "Led Zeppelin"]);
  const [initialValue] = useState(["Pink Floyd", "Led Zeppelin"]);
  const set = (newValue: string[]) => {
    setValue(newValue);
  };
  const push = (valueToPush: string) => {
    setValue((prevArray) => [...prevArray, valueToPush]);
  };
  const removeAt = (index: number) => {
    setValue((prevArray) => [
      ...prevArray.slice(0, index),
      ...prevArray.slice(index   1),
    ]);
  };
  const insertAt = (index: number, item: "string") =>
    setValue((l) => [...l.slice(0, index), item, ...l.slice(index)]);

  const updateAt = (index: number, newValue: string) => {
    setValue((prevList) =>
      prevList.map((element, index) => (index === index ? newValue : element))
    );
  };

  const clear = () => setValue([]);
  const reset = () => setValue(initialValue);

我們得到了完全相同的方法和狀態。而且程式碼更小更簡單

該庫得到積極維護,添加了新的鉤子,有一個帶有文檔的方便網站,鉤子使用簡單的源代碼並具有更複雜的 API。現在已經實現了 80 多個鉤子。我還想指出,有絕對新的實現,我在其他地方沒有見過:

  • usePaint — 用於建立畫布並在其上繪圖。你設定畫布,鉤子允許你在上面畫畫,調整畫筆的大小、顏色、不透明度以及狀態「繪製」或「現在繪製」
  • useStopwatch — 用於建立碼錶
  • useEyeDropper — 使用滴管進行顏色選擇
  • 大量的鉤子用於用戶設備或瀏覽器 API(useMemory、useOperatingSystem、useClipboard、useBrowserLanguage、useHash 等)

結論

這樣的函式庫應該成為一種開發標準,只是因為它們讓你不必專注於很久以前就已經發明的小細節,你只需要導入它們並使用它們。

反應使用鏈接

npm — github

版本聲明 本文轉載於:https://dev.to/tyoma_aac5bc47a51c726e0d8/dont-reinvent-the-wheel-or-utility-libraries-for-vue-and-react-applications-1ido?1如有侵犯,請聯絡study_golang@163 .com刪除
最新教學 更多>
  • 小Swoole資料庫
    小Swoole資料庫
    Small Swoole Db 2.3引入左連接: $selector = (new TableSelector('user')) ->leftJoin('post', 'messageOwner', 'message') ; $selector->where() -&g...
    程式設計 發佈於2024-11-06
  • 如何使用組譯指令最佳化 __mm_add_epi32_inplace_purego 函數,以在位置總體計數操作中獲得更好的效能?
    如何使用組譯指令最佳化 __mm_add_epi32_inplace_purego 函數,以在位置總體計數操作中獲得更好的效能?
    使用程序集優化 __mm_add_epi32_inplace_purego此問題旨在優化 __mm_add_epi32_inplace_purego 函數的內部循環,該函數對位元組數組執行位置填充計數。目標是透過利用彙編指令來提高效能。 內部循環的原始Go 實作: __mm_add_epi32...
    程式設計 發佈於2024-11-06
  • 使用 React Router 進行導航 React Js 第一部分 React 應用程式中的路由指南
    使用 React Router 進行導航 React Js 第一部分 React 應用程式中的路由指南
    歡迎回到我們的 React 系列!在先前的文章中,我們介紹了元件、狀態、道具和事件處理等基本概念。現在,是時候使用 React Router 探索 React 應用程式中的路由了。路由允許您在應用程式內的不同視圖或元件之間導航,從而創建無縫的使用者體驗? . 什麼是 React 路由...
    程式設計 發佈於2024-11-06
  • file_get_contents() 可以用於 HTTP 檔案上傳嗎?
    file_get_contents() 可以用於 HTTP 檔案上傳嗎?
    使用 HTTP Stream Context 透過 file_get_contents() 上傳檔案使用 cURL 擴充功能可以無縫地實作透過 Web 表單上傳檔案。不過,也可以使用 PHP 的 file_get_contents() 函數結合 HTTP 流上下文來執行檔案上傳。 Multipart...
    程式設計 發佈於2024-11-06
  • React 中的 UseEffect
    React 中的 UseEffect
    歡迎 React Hooks 的世界!今天,我們將深入探討最受歡迎的掛鉤之一:useEffect。別擔心,我們會讓它變得有趣且易於理解。那麼,就讓我們開始吧! ? ?什麼是useEffect useEffect 是一個 React Hook,可讓您在功能元件中執行副作用。副作用是在元件外部發生的操...
    程式設計 發佈於2024-11-06
  • 如何在 Google Cloud Platform 免費層上建立現代資料平台
    如何在 Google Cloud Platform 免費層上建立現代資料平台
    我在 Medium.com 上發布了一系列七篇免費公開文章「如何在 Google Cloud Platform 免費層上建立現代資料平台」。 主要文章位於:https://medium.com/@markwkiehl/building-a-data-platform-on-gcp-0427500f...
    程式設計 發佈於2024-11-06
  • 貼文 #f 掙扎
    貼文 #f 掙扎
    這篇文章是關於我迄今為止在編碼和學習方面的掙扎 一個。我只能保持專註一個小時,最多兩個小時。 b.我很容易分心 c.我不能久坐,否則我會開始感到煩躁和休息腿部問題。 我想到的有助於解決問題的解決方案 一個。我需要開始更頻繁地使用我的番茄工作法應用程式 B. 我開始將手機調成震動,如果我有另一個螢...
    程式設計 發佈於2024-11-06
  • 面向 Web 開發人員的熱門 Chrome 擴充功能 4
    面向 Web 開發人員的熱門 Chrome 擴充功能 4
    2024 年最適合 Web 開發者的 10 款 Chrome 擴展 隨著 2024 年的進展,Chrome 擴充功能已成為 Web 開發人員工具包中不可或缺的一部分,在瀏覽器中提供強大的功能。在這篇文章中,我們將探討今年在 Web 開發社群掀起波瀾的 10 大 Chrome 擴充功...
    程式設計 發佈於2024-11-06
  • 如何使用 React Router v4/v5 巢狀路由:簡化指南
    如何使用 React Router v4/v5 巢狀路由:簡化指南
    React Router v4/v5 的嵌套路由:簡化指南使用React Router 時,嵌套路由是組織的關鍵技術您的應用程式的導航。然而,新手經常面臨設定嵌套路由的挑戰。本文旨在簡化使用 React Router v4/v5 的流程。 React Router v4 在路由嵌套方式上引入了重大轉...
    程式設計 發佈於2024-11-06
  • 如何使用 UTF8 字元編碼保留 MySQL 中的表格式?
    如何使用 UTF8 字元編碼保留 MySQL 中的表格式?
    使用UTF8 字元編碼增強MySQL 命令列格式使用儲存在資料庫表中的瑞典語和挪威語字串時,查詢資料時可能會遇到表格式問題使用不同的字元集。 問題陳述預設情況下,使用「set names latin1;」產生失真的輸出: ----------------------------------- | ...
    程式設計 發佈於2024-11-06
  • CSS 盒子模型
    CSS 盒子模型
    CSS 盒子模型是 Web 開發中的一個基本概念,它構成了 Web 佈局和設計的基礎。它決定了元素的大小、內容的呈現方式以及它們如何在網頁上相互互動。掌握盒模型對於任何使用 HTML 和 CSS 的開發人員來說都是至關重要的,因為它會影響元素的顯示、間隔和對齊方式。 在本文中,我們將詳細探討 CS...
    程式設計 發佈於2024-11-06
  • 我如何寫 CSS 選擇器
    我如何寫 CSS 選擇器
    有很多 CSS 方法,但我討厭它們。有些多(順風等),有些少(BEM、OOCSS 等)。但歸根結底,它們都有缺陷。 當然,人們使用這些方法有充分的理由,並且解決的許多問題我也遇到過。因此,在這篇文章中,我想寫下我自己的關於如何保持 CSS 組織的指南。 這不是任何人都可以開始使用的完整描述的 C...
    程式設計 發佈於2024-11-06
  • 為什麼輸入元素不支援 HTML5 中的 ::after 偽元素?
    為什麼輸入元素不支援 HTML5 中的 ::after 偽元素?
    ::before 和::after 的偽元素相容性在HTML5 中,::before 和::after 偽元素可以使用附加內容(例如圖示或複選標記)增強元素。然而,並非所有元素都完全支援這些偽元素。 輸入元素和 ::after在提供的範例中,::after 偽元素不是顯示在輸入元素上。這是因為類似 ...
    程式設計 發佈於2024-11-06
  • 如何使用 PHP 決定特定時區的星期?
    如何使用 PHP 決定特定時區的星期?
    在PHP 中確定指定時區的星期幾在PHP 中處理日期和時間時,處理起來可能具有挑戰性時區並計算具體值,例如星期幾。本文將引導您完成使用 PHP 尋找特定時區中的星期幾的過程。 了解使用者的時區要確定使用者的時區,您需要使用 PHP 函數 date_default_timezone_get()。此函數...
    程式設計 發佈於2024-11-06
  • 如何在 Go 頻道中有效地產生不同的值?
    如何在 Go 頻道中有效地產生不同的值?
    在 Go Channel 中高效產生不同值在 Go 中,Channel 為並發通訊提供了強大的機制。但是,在使用通道時,您可能會遇到需要過濾掉重複值或確保僅發出不同值的情況。本文探討了建立僅輸出唯一值的通道的有效方法。 產生不同值的挑戰考慮以下場景:您有一個通道接收多個值,並且您希望迭代它,同時僅打...
    程式設計 發佈於2024-11-06

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3