採取狀態
React在狀態管理方面有點特立獨行。雖然它擁有useState
和Context等一流工具,但在響應式全局狀態方面,你更多的是靠自己。 David Ceddia的“React狀態管理庫以及如何選擇”這篇文章很好地討論了各種選擇。我說它“特立獨行”,是因為其他所有主要的JavaScript框架都有自己認可的全局狀態實現。
在我看來,狀態的概念對於前端開發至關重要。它就像組件一樣。它只是一個巧妙的方法來開發數字產品。狀態是我們自己對網站上發生事件的抽象。它可以是側邊欄是打開還是關閉,評論數據的列表,登錄用戶的詳細信息,或者我們需要繪製和製作功能性UI的任何其他內容。
這就是為什麼原生Web組件根本沒有嘗試處理狀態的概念仍然讓我感到驚訝的原因。我沒有足夠的知識來了解原因,但作為一個觀察者,我可以看到開發人員正在努力尋找在Web組件內部和跨Web組件使狀態發揮作用的最佳方法。最近,我遇到了Evan You的@vue/lit
。這是一個用於Web組件的微型框架,它使用lit-html解決模板和重新渲染問題,然後結合Vue的響應式狀態。在我看來,這看起來很酷。
Evan的想法將使用的庫的總大小減少到約6kb。那麼我們在這裡能做到多小呢? Krasimir Tsonev撰寫的“使用JavaScript模塊系統進行狀態管理”一文中,他們根本沒有使用任何庫(可以說是沿途創建了一個小的庫)。狀態管理器可以只是一個我們導入和使用的模塊,它本質上是一個包含值、變異函數和偵聽器的對象。這將狀態管理的開銷降低到幾乎為零,但代價是放棄了使用更強大的庫可以獲得的高效重新渲染、更好的模板和生命週期功能。
說到根本不使用任何庫,Leo Bauza的“Viget如何使用JavaScript?”一文中,他們介紹了他們在HTML基礎之上添加功能所使用的原生模式。看起來所有功能都是通過data-*
屬性應用的,每個data
屬性都有自己的JavaScript模塊(類)來處理該特定功能。這裡似乎沒有處理全局狀態,但他們確實在模塊內手動處理狀態。
我發現所有這些東西都很有趣。在我的工作中,我敢打賭我相當典型。如果這是一個小型項目,我可能會自己動手。如果它是一個中等規模但影響較小的項目,我可能會選擇新奇的——甚至可能是實驗性的——方法。但是,一旦我做的事情變得龐大且影響深遠,我就會發現從大型玩家中選擇更舒服,即使這有時意味著更重的庫。 ?
以上是採取狀態的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

在元素個數不固定的情況下如何通過CSS選擇第一個指定類名的子元素在處理HTML結構時,常常會遇到元素個數不�...

關於Flex佈局中紫色斜線區域的疑問在使用Flex佈局時,你可能會遇到一些令人困惑的現象,比如在開發者工具(d...

格子呢是一塊圖案布,通常與蘇格蘭有關,尤其是他們時尚的蘇格蘭語。在Tartanify.com上,我們收集了5,000多個格子呢
