當使用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