中继fetchQuery:如何在没有片段结构的情况下获取查询结果
Posted
技术标签:
【中文标题】中继fetchQuery:如何在没有片段结构的情况下获取查询结果【英文标题】:Relay fetchQuery: How to get result of query without fragment structure 【发布时间】:2021-01-28 22:20:50 【问题描述】:假设我有一个***查询和一个带有如下片段的子组件:
export const HomePageQuery = graphql`
query HomePageQuery
viewer
...SubComponent_viewer
`
// then a sub-component with
const SubComponentWithFragment = createFragmentContainer(SubComponent,
viewer: graphql`
fragment SubComponent_viewer on Viewer
me
someImportantValue
`
)
我想强制调用HomePageQuery
,然后一旦我得到结果,就用someImportantValue
做一些事情。
所以我尝试了这个:
// This is a Relay Environment using react-relay-network-modern w/ some middleware
// can give implementation details if required but didn't think necessary
import relayEnv from 'Relay/createRelayEnvironment'
const data = await fetchQuery(relayEnv.environment, HomePageQuery, )
console.log(data)
然后这会返回结果,但仍会分解为片段。例如
viewer:
__fragments: SubComponent_viewer: …
有没有办法像您在 graphiQL 中找到的那样从中获得响应?例如
viewer:
me:
someImportantValue: 39
我可以尝试在片段中导航以找到我需要的东西,但这似乎过于复杂,并且容易受到组件结构变化的影响。
之后我唯一的选择是从本地商店获取它吗?
目前使用 Relay v7
【问题讨论】:
【参考方案1】:我确实设法半回答了这个......
您可以使用Relay 中的@inline
指令来检索未屏蔽的结果。
这并没有完全解决我的特定用例,因为我希望查询本身保持被屏蔽,但是当我强制调用HomePageQuery
时得到未屏蔽的结果。但如果你没有这个要求,它应该可以工作。
【讨论】:
以上是关于中继fetchQuery:如何在没有片段结构的情况下获取查询结果的主要内容,如果未能解决你的问题,请参考以下文章