在 Relay.createContainer 中使用 graphql`

Using graphql` in Relay.createContainer

我有一个特定的用例,我想使用新的 graphqlbabel transform since it provides graphql query name lookup but without createFragmentContainer. Is there any way to write a converter from gaphql 到 Relay.QL`?

我查看了 Relay.QLand graphql 的输出,但找不到转换 graphqlto Relay.QL

的好方法

我想出来了这是我写的代码示例

const convertToClassicQuery = query => query.classic(RelayQL_GENERATED).node;

这是一个小库,用于转换 createContainer 以接受中继现代查询

import Relay from 'react-relay/classic';

const RelayQL_GENERATED = require('react-relay/classic').QL; // eslint-disable-line

const convertToClassicQuery = query => query.classic(RelayQL_GENERATED).node;

const convertFragments = fragments => _.mapValues(fragments, fragment => () => convertToClassicQuery(fragment()));

const convertFragmentProps = (fragmentProps) => {
  fragmentProps.fragments = convertFragments(fragmentProps.fragments); // eslint-disable-line
  return fragmentProps;
};
const createContainer = (Component, fragmentProps) => Relay.createContainer(Component, convertFragmentProps(fragmentProps));


module.exports = {
  createContainer,
};