2017-05-30 63 views
0

我有一個React/Redux應用程序,它可以很好地與API交談,並處理很多很少從數據庫中更改數據。爲了減少流量並改善UE,我現在想要創建一個緩存機制,通過自動使用可用的最佳技術(從IndexedDB降序到LocalStorage等)在客戶機上存儲數據。如何在多個操作中共享一個對象的單個實例?

我創建了一個cache對象,該對象確定存儲機制(將其保存到引擎屬性,因此檢查只需要運行一次)。它也有一些基本的方法save(key, value)load(key),然後調用最初確定的機制適當的功能。

緩存對象及其方法可以工作,但我想知道如何在應用程序加載時僅在我的主index.js中創建緩存,然後在我的操作中使用這個非常對象而無需每次都重新創建另一個緩存對象?

順便說一句:讓緩存成爲我的應用程序狀態的一部分,因爲它並不包含真正的數據來運行應用程序(如果沒有緩存可用,它只能調用API)。

我需要注入緩存到我的動作莫名其妙嗎?或者我需要在主對象window中創建一個全局/靜態緩存對象?

感謝您對此問題的澄清和想法。

回答

3

重新加密的中間件提供了一個custom argument injection功能,您可以使用。

當你的行動創造者創造店

const cache = createCache() 

const store = createStore(
    reducer, 
    applyMiddleware(thunk.withExtraArgument(cache)) 
) 

然後

function getValue(id) { 
    return (dispatch, getState, cache) => { 
    // use cache 
    } 
} 
+0

謝謝,這聽起來前途 - 沒有雙關語意)我會去看看。 – Robert

相關問題