我正在尝试取一些Github's GraphQL data并使用React& amp;显示它中继。我遇到的两个问题是,似乎relay正在为响应添加别名(使其难以引用),并且查询的所有项目都不会传递到我的组件props
中。在下面的代码中,我可以呈现this.props.relay.variables.name
,但在尝试循环this.props.relay.variables.issues
// AppQuery.js
import Relay from 'react-relay'
export default {
relay : Component => Relay.QL `
query {
relay {
${Component.getFragment('relay')}
}
}
`
};
// AppContainer.js
import Relay from 'react-relay'
import App from './AppComponent'
export default Relay.createContainer(App, {
initialVariables: {
owner: "rails",
name: "rails",
count: 10
},
fragments: {
relay: () => Relay.QL `
fragment on Query {
repository(owner: $owner, name: $name) {
name
owner
description
issues(first: 20) {
edges {
node {
title
}
}
}
}
}`
}
});
//AppComponent.js
export default class App extends React.Component {
render() {
return (
<div>
<h1>{this.props.relay.variables.name}</h1>
<ul>
{ this.props.relay.variables.issues.edges.map((issue) => {
return(<li>{issue.node.title}</li>)
})}
</ul>
</div>
);
}
}
在响应预览中,我似乎成功获取了指定的数据。
但是当我控制日志this.props
时,缺少了一些来自fetch的属性。
答案 0 :(得分:1)
您必须使用variables
组件中的this.props.relay.repository
来访问查询响应,而不是访问片段的App
。
例如,要映射所有问题:
<ul>
{ this.props.relay.repository.issues.edges.map((issue) => {
return(<li>{issue.node.title}</li>)
})}
</ul>