2017-05-30 61 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

相关问题