【发布时间】:2017-12-12 00:41:50
【问题描述】:
当使用 react-apollo 和 redux 时,来自服务器的数据缓存在 apollo 键下的 redux 存储中:
{
apollo: // results from Apollo queries
}
创建自己的 reducer 和相应的状态树后,您的 store 可能如下所示:
{
apollo: { ... },
ui: {
selectedItem: 2;
showItems: 6
}
}
假设有一个动作改变了ui.selectedItem 的值,并且这个值是埋在apollo 对象中某处的项目的索引。
使用reducer composition,我们ui 状态的reducer 将无法访问Apollo 状态下的任何内容。
在我们的组件中,我们可以通过mapStateToProps 订阅ui 状态的更改,并且我们可以使用react-apollo GraphQL 容器(或@graphql 装饰器)将Apollo 结果映射到道具。
但是我们如何使用根据 Apollo 结果和应用程序中的其他状态计算的值来更新我们的商店?
例如,如果 apollo.item.list 是一个项目数组,而 ui.selectedItem 是您要在该列表中定位的索引 - 商店如何包含以下值:
apollo.item.list[ui.selectedItem]
【问题讨论】:
标签: node.js reactjs react-redux graphql react-apollo