所以我正在研究用于服务器端渲染的反应应用程序的中继。我正在尝试使用relay从graphql端点获取数据。
我有点跟随this,使用fetchQuery
通过中继编译器从编译的graphql发出请求来获取数据。
e.g。
import { graphql, fetchQuery } from 'react-relay'
const query = graphql`
query SomeQuery($id: ID) {
author(id: $id) {
name
...SomeFragment_authorData
}
}
`
const variables = { "id" : "1f" };
fetchQuery(env, query, variables)
.then((jsonData) => { console.log(jsonData); })
当它完成运行时,它会给我一些这样的对象:
{
author: {
__fragment: { ... }
...
}
}
我认为包含createFragmentContainer()
的子组件将使用它来获取真实数据。
由于我没有使用createFragmentContainer()
,我不确定如何正确获取数据,有没有办法将上述响应转换为真实数据?
任何帮助将不胜感激!
注意:
目前我正在采取这些措施来获取数据:env._network.fetch(query(), variables)
。它工作正常,但我需要挖掘私有变量似乎不正确,以便获得我提供给fetch
对象的Network
。
答案 0 :(得分:0)
您需要在片段传播中添加一个relay指令:
...SomeFragment_authorData @relay(mask: false)
答案 1 :(得分:0)
您可以使用中继环境和中继运行时实用程序。
import {
createOperationDescriptor,
getRequest,
} from 'relay-runtime';
const request = getRequest(query);
const operation = createOperationDescriptor(request, variables);
environment.execute({ operation }).toPromise();