是否可以不使用带继电器的babel-relay-plugin?我想动态生成GraphQL模式,而Relay似乎想在编译时知道整个类型系统。是否可以将其推迟到运行时间?
任何人都知道babel-relay-plugin到底在做什么?我真的想用它来转换查询并组合片段......但如果它允许我动态构建查询,我愿意没有类型检查和验证。
就此而言,有没有人用过这个? https://github.com/gyzerok/adrenaline
也许我只是用它来制作查询。
答案 0 :(得分:2)
在典型情况下,Relay在编译时需要模式,如您所知。设计的许多方面都基于能够在运行时渲染之前做事(比如生成查询)。
然而,有可能破解事物并获得一些运行时动态;例如,考虑"游乐场"在the Relay website上,它允许您在浏览器中定义模式并针对它运行代码。
它使用some nasty hacks执行此操作,但基本上归结为calling Babel and evaling the result:
var {code} = babel.transform(source, {code: true, ast: false});
return eval(code);
同样具有指导意义:how it updates the schema并使用relay-local-schema package。