![](/img/trans.png)
[英]How to combine FragmentContainer with RefetchContainer in Relay modern
[英]Relay RefetchContainer does not update props
我的RefetchContainer每次都發出帶有相同參數的查詢,但不會更新流到refetchcontainer組件的道具。
這篇文章解釋了為什么在使用RefetchContainers https://github.com/facebook/relay/issues/2244時需要為片段使用變量
但是是否有必要在每次調用refetch()時傳遞具有不同值的變量嗎? 我怎樣才能將新的價值融入我的道具?
這是我的createRefetchContainer:
export default createRefetchContainer(
DashboardRefetchContainer,
{
dashboardData: graphql`
fragment DashboardRefetchContainer_dashboardData on Query @argumentDefinitions(
idFund: {type: "String!"},
)
{
...DashboardTopMetrics_lastIntraDay
...DashboardTopMetrics_last12Month
specsFundByIdFund(idFund: $idFund) {
lastOne: fundsByIdFund(orderBy: [CREATED_AT_DESC] first:1) {
nodes {
...Risk_expo
...Risk_vars
betaOneYear
drawdown
exposureNet
cash
turnover
benchmark
volatility1Y
navY
nbOrders
}
}
}
specsFundByIdFund(idFund: $idFund) {
...Risk_tresh
}
}
`,
dashboardGraphData: graphql`
fragment DashboardRefetchContainer_dashboardGraphData on Query @argumentDefinitions(
idFund: {type: "String!"},
fundCond: {type: "FundCondition!"},
){
// more items...
allFunds(first:7 orderBy: [CREATED_AT_DESC] condition: $fundCond) {
...LineFragCount_item
...LineFragPerc_item
...LineFragWatch_item
}
todayAssetAllPortfolio: todayAssetAllPortfolio(idFund: $idFund) {
nodes {
name
priceEur
expoEur
valueEur
asset {
id
position
currency
perc
underlyingByUnderlying {
tickerBbg
perfDay
perfWtd
perfYtd
}
}
}
}
}
`
},
graphql`
query DashboardRefetchContainerRefetchQuery($idFund: String!, $fundCond: FundCondition!) {
...DashboardRefetchContainer_dashboardData @arguments(idFund: $idFund)
...DashboardRefetchContainer_dashboardGraphData @arguments(idFund: $idFund, fundCond: $fundCond)
}
`
)
這里是QueryRenderer graphql查詢:
query DashboardMainChartsQuery($idFund: String!, $fundCond: FundCondition!) {
...DashboardRefetchContainer_dashboardData @arguments(idFund: $idFund)
...DashboardRefetchContainer_dashboardGraphData @arguments(idFund: $idFund, fundCond: $fundCond)
}
@Louis,必須將refetchVariables
傳遞給refetchVariables
。 例如,如果您具有loadMore
函數,則可能會有以下內容:
_loadMore() {
// Increments the number of stories being rendered by 10.
const refetchVariables = fragmentVariables => ({
first: fragmentVariables.count + 10,
});
this.props.relay.refetch(refetchVariables);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.