簡體   English   中英

當只有一個父選擇器時使用 createSelector 的好處

[英]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

現在我們有兩種方法來獲取用戶年齡:

  1. 使用createSelector並使用 getUser 作為父選擇器:
const getAge = createSelector(
   getUser,
   user => user.get('age')
)
  1. 直接使用現有的選擇器:
const getAge = state => getUser(state).get('age');

問題:

哪個更好,關於性能,記憶等。

另一個派生的問題:

我這里提出的例子很簡單,讓我們考慮一下,當涉及到一個非常大且復雜的 redux 存儲時,兩種方法的區別是否重要?

如果選擇器的屬性經常變化,將它們放在單獨的選擇器上是有意義的。 至少在通常 object 整體變化的選擇器的情況下,我更喜歡為用戶創建一個選擇器。

例如,假設我們有 object:

const profile = {
  name   : 'John',
  email,
  timezone,
  ...
  locale : 'en',
}

如果創建的<Translate>組件與區域設置緊密耦合,但與配置文件的其他部分(例如名稱等)不緊密耦合,則getLocale()的選擇器是有意義的(也是我們實現區域設置組件的方式) .

另一方面,如果您有一個用戶可以在其中編輯各種字段的個人資料頁面,那么該頁面很可能需要在進行更改時經常重新呈現,因此在該頁面上有一個getProfile()選擇器是有意義的.

我們處理一個相當復雜和大的 Redux state,例如,因為我們在 web 中使用了currentUserIduserName來利用這些應用程序的專用選擇器。

但是,對於測驗或作業,我們使用單個選擇器getQuizContents()而不是其內部字段,因為我們知道大多數需要有關測驗的信息的組件不僅需要名稱,還需要許多內部字段,例如日期,問題數量等

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM