redux主要用於狀態管理
使用redux的主要優勢之一是它可以幫你處理應用的共享狀態。如果兩個元件同時需要訪問同一狀態的現象稱為「共享狀態」。你可以將該狀態提公升到附近的父元件,但是如果該父元件在元件樹中向上好幾個元件的位置,那麼將狀態當做屬性向下乙個乙個地傳遞,這項工作很快就會變得乏味。此外,在該父元件和該子元件之間的元件甚至根本不需要訪問該狀態!在構建網路應用時,redux不僅使我們能夠以有條理的方式儲存資料,而且使我們能夠在應用的任何位置快速獲取該資料。只需告訴redux到底哪個元件需要哪個資料,它就會為你處理後續一切工作!借助redux,你可以控制狀態改變的時間、原因和方式。
redux的三大優勢:
1、單一資料來源
redux的基本原則之一是存在單一資料來源:store。也就是說,store包括應用的全域性狀態,全儲存在乙個物件樹中。只有單個狀態樹,對於應用的很多方面都有好處。假設在構建應用時嘗試實現撤消/重做功能。如果所有狀態都儲存在乙個樹(單一資料來源)中,則實現起來比資料分散在多個元件中簡單多了。狀態集中到乙個位置後,除錯和檢測過程也會簡單很多!為了保持這種單一資料來源特性,redux制定了幾條規則,確保一切盡在掌控。如下:
2、狀態是唯讀的
redux應用中的狀態是唯讀的,即redux狀態不可變。例如,react元件不能直接寫入redux狀態,而是發出intent來更新狀態。實際上,只有叫做reducer的純函式能夠更改狀態
這樣設計的好處是:增強了可**性和可靠性避免產生***(下個部分將詳細介紹!)阻止外部檔案修改state。所有對state的改動都被集中於乙個地方,並且被嚴格地依次觸發更改state的唯一方式是派發相應的action,以描述所需的更改。暫時不用擔心這些概念;我們將在下個部分詳細講解!
3、狀態的改變只能通過純函式操作
純函式是函式式程式設計的核心概念。除了避免資料突變和***之外,純函式還與元件的概念非常契合。首先,純函式本質上就是模組化的,這使它更容易被測試。由於當引數相同時,純函式總是產⽣相同的結果,你不必擔⼼應用其他部分的資料受到影響。在除錯期間,這將給予明確定義的額外控制點。此外,純函式使**更好維護。純函式不會產生***。這意味著你在重構應用時,純函式不會對其外部內容產生任何不利影響。儘管使⽤純函式會為你的應⽤帶來諸多好處,你仍然可以選擇將純函式與非純函式一起使用。使用非純函式並不一定意味著「糟糕的程式設計方式」。例如,使用事件處理程式更新 dom 的按鈕就不適合使用純函式,因為事件處理程式會更新 dom(即產生***!)。使用純函式可以幫助你提高**質量,在構建應用時記住這一點將使你成為更優秀的程式設計師。
1、關於createstore,combinereducer,compose等
ps:當createstore(reducer,preloadedstate)中的reducer函式是combinereducers合併成的,傳入初始狀態時,要注意state的keys要和reducers一致。
redis的好處以及應用
redis的好處 a 速度比較快 因為資料是在記憶體中的,b 支援較多的資料型別 比如 string list set map 等 c 支援事物 操作都是源自性的 對於資料而言要麼全部執行 要麼全部不執行 d 豐富的特性 可用於快取 訊息 設定key的過期時間 與memcached相比較的優勢 re...
解耦的好處以及哪來的這麼多好處
關於解耦合的乙個現實例子 跟大部分餐飲企業一樣,星巴克也主要致力於將訂單處理的吞吐量最大化。顧客訂單越多,收入就越多。為此,他們採取了非同步處理的辦法。你在點單時,收銀員取出乙隻咖啡杯,在上面作上記號表明你點的是什麼,然後把這個杯子放到佇列裡去。這裡的佇列指的是在咖啡機前排成一列的咖啡杯。正是這個佇...
執行緒鎖的使用 和好處 以及缺點
上面寫錯了函式名 是mutex.acquire import threading from threading import thread from threading import lock number 0 lock lock def work3 global number for i in r...