![](/img/trans.png)
[英]Creating a selector factory with createSelector in TypeScript
[英]Benefit of using createSelector when there is only one parent selector
假設我們有一個簡單的 redux 存儲:
{
user: {
age: 10
}
}
我們有一個選擇器來獲取用戶:
const getUser = state => state.get('user') // suppose we used immutable.js
現在我們有兩種方法來獲取用戶年齡:
createSelector
並使用 getUser 作為父選擇器:const getAge = createSelector(
getUser,
user => user.get('age')
)
const getAge = state => getUser(state).get('age');
問題:
哪個更好,關於性能,記憶等。
另一個派生的問題:
我這里提出的例子很簡單,讓我們考慮一下,當涉及到一個非常大且復雜的 redux 存儲時,兩種方法的區別是否重要?
如果選擇器的屬性經常變化,將它們放在單獨的選擇器上是有意義的。 至少在通常 object 整體變化的選擇器的情況下,我更喜歡為用戶創建一個選擇器。
例如,假設我們有 object:
const profile = {
name : 'John',
email,
timezone,
...
locale : 'en',
}
如果創建的<Translate>
組件與區域設置緊密耦合,但與配置文件的其他部分(例如名稱等)不緊密耦合,則getLocale()
的選擇器是有意義的(也是我們實現區域設置組件的方式) .
另一方面,如果您有一個用戶可以在其中編輯各種字段的個人資料頁面,那么該頁面很可能需要在進行更改時經常重新呈現,因此在該頁面上有一個getProfile()
選擇器是有意義的.
我們處理一個相當復雜和大的 Redux state,例如,因為我們在 web 中使用了currentUserId
或userName
來利用這些應用程序的專用選擇器。
但是,對於測驗或作業,我們使用單個選擇器getQuizContents()
而不是其內部字段,因為我們知道大多數需要有關測驗的信息的組件不僅需要名稱,還需要許多內部字段,例如日期,問題數量等
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.