2017-03-04 101 views
0

我想實現一個LRU的反應,終極版應用程序的工作,但我不知道什麼商店通過減速機讀取和寫入數據的最佳策略,這樣我可以保持LRU結構。與LRU和終極版店戰略

目標是爲最近的用戶列表實現LRU。實際上,只要應用程序點擊特定的聯繫人,他們就會被添加到最近的用戶列表中。假設列表最多出現在10個用戶,所以當它達到最大值時有效,我會彈出列表中最舊的訪問用戶。

我可以在列表中的每個用戶時間戳關聯,但這意味着我每次從存儲器中讀出狀態的時候,我將不得不排序,找到最老的時間戳,我覺得很慢。

我是React/Redux的新手,請耐心等待。

任何建議表示讚賞!

感謝, 德里克

回答

1

我只想有一個單獨的減速作用在「選擇聯繫人」動作(有可能是另一個減速,也將作用於設置當前選擇的用戶)。它會保持陣列,只是推到前面,如果最大值是reachers,彈出結束。

喜歡的東西:

const initialState = [] 

export const lruReducer = (state = initialState, action) => { 
    switch(action.type) { 
     case 'SELECT_CONTACT': 
      // copy the previous array (I'm assuming ES6 syntax here, but you could use Object.assign or ImmutableJS or something if preferred) 
      // this is important to keep the state immutable 
      let newState = [...state] 

      // add the new contact (this is where you would do any de-duping logic 
      newState.unshift(action.user) 

      // keep removing items until constraint is met 
      while (newState.length > 10) { 
       newState.pop() 
      } 

      // return new array 
      return newState 
     default: 
      return state 
    } 
} 

然後,只需與其他減速器像正常結合這一點。

+0

謝謝,是的,這是我最終做的 – darewreck