使用中继反应本机 graphql 查询:未收到获取的数据
React Native graphql query with relay: fetched data not received
我有以下查询:
query {
viewer{
place(id: "1a4871311fe990d6d94cf1eed9fd65008856e118b790e7dcf728d86bc3aef7ec"){
name
}
}
}
这当然可以在 GraphiQL 上正常工作。我想在 Relay 容器中使用这个查询,所以我创建了一个 RootContainer:
<RootContainer
Component={PlaceDetailsComponent}
route={new PlaceDetailsRoute({placeID: this.props.id})}
renderFetched={(data) => {
console.log('data: ', data);
return (
<PlaceDetailsComponent {...this.props} {...data}/>
)
} }
renderLoading={() => <ProgressBar visible={true} />}/>
成功获取数据,但我在控制台上看到的是:
data: { placeID: '1a4871311fe990d6d94cf1eed9fd65008856e118b790e7dcf728d86bc3aef7ec',
viewer:
{ __dataID__: 'Vmlld2VyLXs6aWQ9PiJ2aWV3ZXIifQ==',
__fragments__: { '1::client': [ {} ] } } }
所以我检查了实际发送到服务器的内容以及收到的内容,我觉得一切正常:
这是我的路线:
import Relay, {
Route
} from 'react-relay';
class PlaceDetailsRoute extends Route {
static queries = {
viewer: () => Relay.QL`
query {
viewer
}
`
}
static routeName = 'PlaceDetailsRoute'
}
export default PlaceDetailsRoute;
这是我的片段:
Relay.createContainer(PlaceDetailsContainer, {
fragments: {
viewer: () => Relay.QL`
fragment on Viewer {
place(id: "1a4871311fe990d6d94cf1eed9fd65008856e118b790e7dcf728d86bc3aef7ec") {
name,
}
}
`
}
});
有什么建议我应该改变吗?在此先感谢您的帮助!
这实际上是预期的行为。 Relay documentation of renderFetched
有注释:
Even though we have access to the data
object in renderFetched
, the actual data is intentionally opaque. This prevents the renderFetched
from creating an implicit dependency on the fragments declared by Component
.
希望这能消除您的困惑。
我有以下查询:
query {
viewer{
place(id: "1a4871311fe990d6d94cf1eed9fd65008856e118b790e7dcf728d86bc3aef7ec"){
name
}
}
}
这当然可以在 GraphiQL 上正常工作。我想在 Relay 容器中使用这个查询,所以我创建了一个 RootContainer:
<RootContainer
Component={PlaceDetailsComponent}
route={new PlaceDetailsRoute({placeID: this.props.id})}
renderFetched={(data) => {
console.log('data: ', data);
return (
<PlaceDetailsComponent {...this.props} {...data}/>
)
} }
renderLoading={() => <ProgressBar visible={true} />}/>
成功获取数据,但我在控制台上看到的是:
data: { placeID: '1a4871311fe990d6d94cf1eed9fd65008856e118b790e7dcf728d86bc3aef7ec',
viewer:
{ __dataID__: 'Vmlld2VyLXs6aWQ9PiJ2aWV3ZXIifQ==',
__fragments__: { '1::client': [ {} ] } } }
所以我检查了实际发送到服务器的内容以及收到的内容,我觉得一切正常:
这是我的路线:
import Relay, {
Route
} from 'react-relay';
class PlaceDetailsRoute extends Route {
static queries = {
viewer: () => Relay.QL`
query {
viewer
}
`
}
static routeName = 'PlaceDetailsRoute'
}
export default PlaceDetailsRoute;
这是我的片段:
Relay.createContainer(PlaceDetailsContainer, {
fragments: {
viewer: () => Relay.QL`
fragment on Viewer {
place(id: "1a4871311fe990d6d94cf1eed9fd65008856e118b790e7dcf728d86bc3aef7ec") {
name,
}
}
`
}
});
有什么建议我应该改变吗?在此先感谢您的帮助!
这实际上是预期的行为。 Relay documentation of renderFetched
有注释:
Even though we have access to the
data
object inrenderFetched
, the actual data is intentionally opaque. This prevents therenderFetched
from creating an implicit dependency on the fragments declared byComponent
.
希望这能消除您的困惑。