嵌套片段数据在Relay中始终相同

时间:2016-03-25 17:17:07

标签: javascript reactjs graphql relay

我是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')
);

1 个答案:

答案 0 :(得分:1)

您可以通过如何解决GraphQL架构中的billing_address来解决一个问题。您是否在billing_address GraphQL类型中添加了field :id, !types.IDglobalIdField?发布GraphQL架构也可能有所帮助。