【发布时间】:2026-01-29 08:50:01
【问题描述】:
假设我有一个*查询和一个带有如下片段的子组件:
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
【问题讨论】: