我是Relay的新手,并且在片段上存在嵌套数据的问题。
当我在graphiql中测试时,以下查询返回正确的数据,因此我相信我的架构是正确的。
{
viewer {
customers {
name
billing_address {
city
}
}
}
}
但是,当我将上述查询与中继结合使用时,customer.name
将是正确的,但customer.billing_address.city
对每个客户都是相同的。令我困惑的是,为什么有些数据是正确的,而嵌套数据只是被复制。
我将非常感谢您对此问题的任何帮助,如果需要更多信息,我很乐意添加它。下面是我项目中目前唯一的Relay代码,我认为这个问题可能存在。
class App extends Component {
render() {
console.log(this.props.viewer.customers);
return (
<div>
{this.props.viewer.customers.map((customer) => (
<div>
<div>{customer.name}</div>
<div>{customer.billing_address.city}</div>
</div>
))}
</div>
);
}
}
class AppHomeRoute extends Relay.Route {
static queries = {
viewer: () => Relay.QL`
query {
viewer
}
`,
};
static routeName = 'AppHomeRoute';
}
const AppContainer = Relay.createContainer(App, {
fragments: {
viewer: () => Relay.QL`
fragment on Viewer {
customers{
name
billing_address{
city
}
}
}`
},
});
ReactDOM.render(
<Relay.RootContainer
Component={AppContainer}
route={new AppHomeRoute()}
/>,
document.getElementById('root')
);
答案 0 :(得分:1)
您可以通过如何解决GraphQL架构中的billing_address来解决一个问题。您是否在billing_address GraphQL类型中添加了field :id, !types.ID
或globalIdField
?发布GraphQL架构也可能有所帮助。