當時我的信念是全域狀態應該透過 React Context 傳遞,以便它可以與 React 並發模式一起工作。因此,我製作了一個比較表來區分我的圖書館和其他圖書館,Zustand 是其中之一。這是2019年的事。

祖斯坦v3

2020年,我加入了Poimandres團隊並接管了Zustand的開發。當時我的興趣是讓全域狀態庫與 React 並發模式一起運作。不可能從並發模式中獲得全部好處,但是有一個名為 useMutableSource 的實驗性 API 可以使全域狀態與並發模式相容。

我使用基於 React Context 的解決方案和 React-Tracked 嘗試了很多事情,並且想知道在沒有 React Context 的情況下我們可以用全域狀態做什麼。 Zustand 已經一年了,但沒有人維護它。於是,我決定接手。

實驗性的 useMutableSource API 還沒準備好,所以第一個任務是更新各種內容並修復一些錯誤。這就是 Zustand v3 誕生的時候。我的希望是很快就會發布帶有 useMutableSource 的 v4,但它沒有發生。這背後還有一個故事。

如今,將全域狀態置於外部並可選擇使用 React Context 來傳遞其儲存是一種眾所周知的模式。 Zustand 是這種模式的先驅。人們對 React Context 中沒有全域狀態非常懷疑,我們很難解釋這是一個有效的模式。

目前狀態

我對 Zustand 關心的事情之一是它的簡單實現和它的小包大小。如果你查看原始程式碼,你會發現它只不過是使用 React hooks 和最小的儲存實作。

截至撰寫本文時,Zustand v4 是最新版本,它具有非常先進的 TypeScript 支持,並且程式碼幾乎完全從 v3 重寫。我們的 Zustand v5 已經準備好迎接下一個版本了。

最後但並非最不重要的一點是,有幾個貢獻者維護這個專案。我接手這個專案的時候沒想到會發生這樣的事情。我對此非常感激。感謝大家。

","image":"http://www.luping.net/uploads/20240730/172233792466a8ca84b1d78.jpg","datePublished":"2024-07-30T19:12:03+08:00","dateModified":"2024-07-30T19:12:03+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Zustand是如何誕生的

Zustand是如何誕生的

發佈於2024-07-30
瀏覽:300

How Zustand Was Born

更準確地說,自從 Zustand v3

介紹

在這篇文章中,我想分享 Zustand 的發展背​​後的故事。確切地說,我不是 Zustand 的原始作者,當 Zustand v0 誕生時,我正在開發其他全域狀態庫,尤其是 React-Tracked。順便說一句,我現在認為自己是 Zustand 的(第二)作者。

我發現我的推文提到了 Zustand,並將其與其他庫(包括我的庫)進行了比較。

當時我的信念是全域狀態應該透過 React Context 傳遞,以便它可以與 React 並發模式一起工作。因此,我製作了一個比較表來區分我的圖書館和其他圖書館,Zustand 是其中之一。這是2019年的事。

祖斯坦v3

2020年,我加入了Poimandres團隊並接管了Zustand的開發。當時我的興趣是讓全域狀態庫與 React 並發模式一起運作。不可能從並發模式中獲得全部好處,但是有一個名為 useMutableSource 的實驗性 API 可以使全域狀態與並發模式相容。

我使用基於 React Context 的解決方案和 React-Tracked 嘗試了很多事情,並且想知道在沒有 React Context 的情況下我們可以用全域狀態做什麼。 Zustand 已經一年了,但沒有人維護它。於是,我決定接手。

實驗性的 useMutableSource API 還沒準備好,所以第一個任務是更新各種內容並修復一些錯誤。這就是 Zustand v3 誕生的時候。我的希望是很快就會發布帶有 useMutableSource 的 v4,但它沒有發生。這背後還有一個故事。

如今,將全域狀態置於外部並可選擇使用 React Context 來傳遞其儲存是一種眾所周知的模式。 Zustand 是這種模式的先驅。人們對 React Context 中沒有全域狀態非常懷疑,我們很難解釋這是一個有效的模式。

目前狀態

我對 Zustand 關心的事情之一是它的簡單實現和它的小包大小。如果你查看原始程式碼,你會發現它只不過是使用 React hooks 和最小的儲存實作。

截至撰寫本文時,Zustand v4 是最新版本,它具有非常先進的 TypeScript 支持,並且程式碼幾乎完全從 v3 重寫。我們的 Zustand v5 已經準備好迎接下一個版本了。

最後但並非最不重要的一點是,有幾個貢獻者維護這個專案。我接手這個專案的時候沒想到會發生這樣的事情。我對此非常感激。感謝大家。

版本聲明 本文轉載於:https://dev.to/dai_shi/how-zustand-was-born-48h3?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 目錄:Django 基礎知識
    目錄:Django 基礎知識
    點此收聽我的直播 目錄:Django 基礎 Django簡介 Django框架概述 安裝Python 設定虛擬環境 安裝 Django 創建您的第一個 Django 專案 Django 專案架構 瞭解 Django 的專案佈局 管理 Django 設定 配置資料庫設定 urls.py、views....
    程式設計 發佈於2024-11-02
  • Leetcode:交替合併字串
    Leetcode:交替合併字串
    問題陳述 1768.交替合併字串 給定兩個字串,word1 和 word2,任務是透過交替字元將它們合併。這個過程從 word1 開始,一直持續到一個字串用完為止。較長字串中的任何剩餘字元都將附加到合併字串的末尾。 我的思考過程 考慮到問題的簡單性,我立即認識到兩...
    程式設計 發佈於2024-11-02
  • 適合初學者開發人員的最佳網站
    適合初學者開發人員的最佳網站
    您是希望在科技業(尤其是開發領域)開始職業生涯的初學者嗎?我可能有資源可以幫助你! 儘管是 alx_africa 的一員,但我不斷地透過沉浸於開發和為個人專案做出貢獻來推動自己在技術領域學習和成長。 幾個月前,在接受非洲領導體驗專業化培訓時,我偶然發現了 roadmap.sh。這份綜合指南是為渴...
    程式設計 發佈於2024-11-02
  • FCS API 與 Insight Ease:比特幣 API 服務的簡單比較
    FCS API 與 Insight Ease:比特幣 API 服務的簡單比較
    如果您熱衷於比特幣 API,那麼選擇正確的 API 非常重要。特別是如果您是開發人員、金融分析師或經營金融科技公司。您會聽到的兩個流行名稱是 FCS API 和 Insight Ease。但哪一個比較好呢?讓我們仔細觀察它們的比較,特別是當涉及加密貨幣即時匯率 API、加密貨幣 API 交易,甚至...
    程式設計 發佈於2024-11-02
  • 如何在不修改HTML的情況下用JavaScript監聽表單提交事件?
    如何在不修改HTML的情況下用JavaScript監聽表單提交事件?
    在JavaScript 中監聽表單提交事件而不修改HTML在本文中,我們解決了在不修改HTML 的情況下監聽表單提交事件的常見挑戰必須修改HTML 程式碼。我們不依賴 HTML 中的 onClick 或 onSubmit 屬性,而是提供純 JavaScript 解決方案。 為了實現這一點,我們利用 ...
    程式設計 發佈於2024-11-02
  • Document.getElementById 與 jQuery $():主要差異是什麼?
    Document.getElementById 與 jQuery $():主要差異是什麼?
    Document.getElementById vs jQuery $():比較分析深入研究Web 開發領域時,了解一般版本之間的細微差別JavaScript 和jQuery 可能至關重要。本文研究了兩個看似相同的程式碼片段之間的細微差別:var contents = document.getEle...
    程式設計 發佈於2024-11-02
  • 在 Java 中使用方法和變數句柄進行運行時物件存取和操作
    在 Java 中使用方法和變數句柄進行運行時物件存取和操作
    反射和方法/var 句柄是 Java 中的兩個強大功能,允許開發人員在運行時存取和操作物件。然而,它們在存取和處理物件的方式上有所不同。 讓我們來看一個如何使用反射來存取類別中方法的範例。我們將從一個名為「MyClass」的簡單類別開始,它有一個私有字串變數和該變數的 getter 方法。為了創建...
    程式設計 發佈於2024-11-02
  • 如何在 Python 中使用內建函數驗證 IP 位址?
    如何在 Python 中使用內建函數驗證 IP 位址?
    Python 中的 IP 位址驗證驗證 IP 位址的有效性是程式設計中的常見任務。從使用者接收字串形式的 IP 位址時,必須對其進行驗證,以確保它們符合正確的格式和結構。 要在 Python 中有效驗證 IP 位址,請考慮以下方法:無需手動解析 IP 位址,而是利用套接字模組中的內建 inet_at...
    程式設計 發佈於2024-11-02
  • 我需要學習程式設計的幫助
    我需要學習程式設計的幫助
    您好,我是系統工程專業的學生,我覺得我在課程中學到的程式設計知識不多。我想自學,因為我對這個主題非常感興趣。這就是我在這個網站上向了解程式設計的人尋求幫助的原因。如果有人知道學習程式設計的最佳課程,從基礎開始並進步到更專業的水平,那將會有很大的幫助。 我感興趣的語言: Java JavaScrip...
    程式設計 發佈於2024-11-02
  • 如何將 gorm.Model 整合到具有日期時間支援的 Protocol Buffer 定義中?
    如何將 gorm.Model 整合到具有日期時間支援的 Protocol Buffer 定義中?
    將gorm.Model 整合到Protocol Buffer 定義中將gorm.Model 整合到Protocol Buffer 定義中將gorm 的gorm.Model 欄位整合到protobuf 定義時,由於proto3 中缺乏日期時間支持,出現了挑戰。本文探討了此問題的解決方案。 ProtoB...
    程式設計 發佈於2024-11-02
  • 修補您的 Discord 活動的網路請求,以實現順利的 CSP 合規性
    修補您的 Discord 活動的網路請求,以實現順利的 CSP 合規性
    透過Discord運行Discord活動時,您可能會遇到內容安全策略(CSP)問題。您可以透過確保網路請求遵循 Discord 代理 規則來修復這些問題。 這可以手動完成...或者你可以讓@robojs/patch處理它。 什麼是CSP? 內容安全策略 (CSP) 是一種安全標準...
    程式設計 發佈於2024-11-02
  • 推薦項目:刪除課程表查看數據
    推薦項目:刪除課程表查看數據
    LabEx 的這個專案釋放了資料庫管理的力量,提供了在資料庫中建立和操作視圖的全面學習體驗。無論您是嶄露頭角的資料庫管理員還是經驗豐富的開發人員,該專案都提供了寶貴的機會來增強您的技能並獲得對資料管理世界的實際見解。 深入了解基礎知識 在這個專案中,您將踏上了解資料庫中視圖的核心概...
    程式設計 發佈於2024-11-02
  • 模擬網路請求變得容易:整合 Jest 和 MSW
    模擬網路請求變得容易:整合 Jest 和 MSW
    Writing unit tests that involve mocking or stubbing API calls can feel overwhelming—I’ve been there myself. In this article, I’ll guide you through a ...
    程式設計 發佈於2024-11-02
  • 使用 Javascript 的哈希映射
    使用 Javascript 的哈希映射
    介紹 哈希映射(Hash Map),也稱為哈希表(Hash Table),是實現關聯數組抽象資料類型的資料結構,是可以將鍵映射到值的結構。 它使用雜湊函數來計算儲存桶或槽數組的索引,從中可以找到所需的值。 哈希映射的主要優點是它的效率。插入新的鍵值對、刪除鍵值對以及查找給定鍵...
    程式設計 發佈於2024-11-02
  • HTPX 簡介:適用於 JavaScript 和 Node.js 的輕量級多功能 HTTP 用戶端
    HTPX 簡介:適用於 JavaScript 和 Node.js 的輕量級多功能 HTTP 用戶端
    作為開發人員,我們的Web 應用程式通常需要一個可靠且高效的HTTP 用戶端,無論我們是在瀏覽器中使用JavaScript 還是在伺服器端使用Node.js 進行構建。這就是我創建 HTPX 的原因——一個強大的、輕量級的解決方案,旨在簡化 HTTP 請求,同時為現代開發提供一系列功能。 在本文中...
    程式設計 發佈於2024-11-02

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

Copyright© 2022 湘ICP备2022001581号-3