0

react-apollo在他们的文档中有一个示例,他们根据组件道具计算查询变量:

// The caller could do something like:
<ProfileWithData avatarSize={300} />

// And our HOC could look like:
const ProfileWithData = graphql(CurrentUserForLayout, {
  options: ({ avatarSize }) => ({ variables: { avatarSize } }),
})(Profile);

我有一个用例,我想根据组件道具更改查询,但很难弄清楚如何做到这一点。

更具体地说,我正在尝试更改CurrentUserForLayout从另一个文件导入的对象。

4

1 回答 1

1

对于包装 graphql 调用并返回另一个接受您的低级组件的函数的高阶组件来说,这听起来像是一个很好的案例。然后,该 HOC 可以根据传递给它的属性动态创建查询。

例如

export const graphqlWrapper = (...rest) => {
  const query = /* Create your query here. */;

  return graphql(query, ...rest);
}

然后使用:

const ProfileWithData = graphqlWrapper({
  options: ({ avatarSize }) => ({ variables: { avatarSize } }),
})(Profile);

或者您可以遵循类似的模式。

不过,关于您的用例的更多细节会很有用。

于 2017-07-20T20:58:32.483 回答