3

我的部分路线是这样设置的:

<Route path=":widgetId" component={Widget} queries={{
    viewer: () => Relay.QL`query { viewer }`,
    widget: () => Relay.QL`query { widget(widgetId: $widgetId) }`
}}>
    <Route
        path="details"
        component={Details}
        queries={{ widget: () => Relay.QL`query { widget(widgetId: $widgetId) }` }}
    />
</Route>

但是,我收到以下错误:

Error:  Invariant Violation: Relay(Details).getFragment(): `viewer` is not a valid fragment name. Available fragments names: `widget``.

路由查询是否:widgetId有效?如果我从顶级路由中删除查看器,一切正常。

编辑:这是详细信息片段:

export default Relay.createContainer(Details, {
    fragments: {
        widget: () => Relay.QL`
            fragment on Widget {
                id,
            }
        `
    }
});

编辑:这里是小部件片段:

export default Relay.createContainer(Details, {
    fragments: {
        widget: () => Relay.QL`
            fragment on Widget {
                id,
            }
        `
        viewer: () => Relay.QL`
            fragment on Viewer {
                id,
            }
        `
    }
});

注意:我使用的是同构中继路由器

4

1 回答 1

0

看起来您需要在 Widget 类中添加一个查看器片段,即:

export default Relay.createContainer(Widget, {
  fragments: {
    widget: () => Relay.QL`
      fragment on Widget {
        id,
      }
    `,
    viewer: () => Relay.QL`
      fragment on ObjectType {
        fields
      }
    `
  }
});
于 2016-06-08T12:00:02.500 回答