在反应路线中,我一直在努力应对标准做法。这是一个基本的例子:反应路线和Redux异步数据请求
这是默认存储:
State: {
invoiceNumbers: [],
customers: [],
invoiceDetails: []
}
当我加载发票列表页I:
- 加载所有发票编号(Ajax请求)
- 负载所有客户(阿贾克斯请求)
当我点击发票我使用react-route路由到发票/ {123}页面,其中我需要特定invoiceId的客户收款和发票明细。
点困惑:
1)当我的路线到一个新的页面,我的商店仍然包含顾客[]和invoicenumber [],但我没有对它们的访问,因为路线不通店相关道具他们?所以我必须做的是创建一个getCustomers动作创建器,它仅仅为客户返回状态。这看起来不正确。
2.)I 想要创建一个动作创建者...说loadCustomers()...将返回商店中已有的东西,但如果是空的,将发出ajax请求以将商店加载到客户。但是ActionCreators 无法访问现有商店,因此他们如何知道商店是否为空?他们只能拨打减速机,我是否正确?我怎么做到这一点?
3.)当我需要发票的详细信息时,我想创建一个ajax请求,然后将数据存储在invoiceDetails []集合中。当我路由到发票详细信息页面时,我只想要那个页面中的一个invoiceDetail记录,但是如果我导航到和来自不同的发票详细信息页面,我只想发出一个ajax请求,如果数据不在该invoiceDetails [ ]集合。
问题:
1.)如何制作动作创建器loadCustomers(),如上所述。
2.)当我路由时,如何将商店中的现有数据正确地获取到组件。
3.)我该如何'缓存'检索我的收藏中的invoiceDetail记录并在必要时重用?
感谢您的帮助,您可以在此提供澄清最佳实践。
你看过REDEX的文档吗?你需要一个中间件来做异步调用,可能的中间件包括:redux-thunk,redux-saga – niceman