在 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,
};
我有一个特定的用例,我想使用新的 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,
};