当使用react-apollo
与终极版,服务器上的数据在终极版商店下apollo
键缓存:阵营阿波罗和终极版:将自定义减速与阿波罗状态
{
apollo: // results from Apollo queries
}
创建自己的减速和相应的状态后,树,你的店可能是这样的:
{
apollo: { ... },
ui: {
selectedItem: 2;
showItems: 6
}
}
试想一下,有哪些改变的ui.selectedItem
价值的作用,而这种价值的项目在apollo
某处埋藏指数对象。
随着reducer composition,我们的ui
州的减速器将正确无法访问阿波罗州下的任何东西。
在我们的组件,我们可以通过mapStateToProps
订阅我们ui
状态变化,并且我们可以使用react-apollo
GraphQL容器(或@graphql
装饰)阿波罗结果映射到道具。
但是,我们如何用我们的应用程序中的Apollo结果和其他状态计算出的值更新我们的商店?
例如,如果apollo.item.list
是项目的数组,ui.selectedItem
是要在该列表中的目标指数 - 如何可以在商店包含一个值:
apollo.item.list[ui.selectedItem]
谢谢,这是有用的输入。我喜欢第一个解决方案,因为memoization选项和可重复使用的选择器(我可能需要这个在多个容器中 - 因此希望将它存储在第一位)。但正如你所说,这不是真正的使用阿波罗的可靠方法。第二种选择似乎将大量工作放到了'graphql'专题讨论区,似乎不能跨容器重用? – duncanhall
此外,第二个选项似乎只在数据更改时才起作用。如果之后selectedItem状态发生改变,那么'itemToShow'值不会被更新? – duncanhall