没有数据的中继容器

Relay container with no data

我正在构建一个应用程序,这是我第一次真正涉足 React、Relay 和 GraphQL,使用 Relay Modern。

基本情况是,我有一个实际上不需要任何数据的登录表单组件;也就是说,组件渲染了一个表单,并有相应的突变,但不需要查询任何东西。

看来在调用createFragmentContainer时提供一个Relay风格的查询片段是必须的,这反过来保证了组件上下文中的this.props.relay不会是null .

现在,我正在为登录表单使用标准(非 Relay)React 组件,但结果是我无法访问 Relay 环境以将其传递给 mutation。

我的问题 - 有没有办法从本质上传递 "empty" 中继片段?或者在这种情况下有更好的成语推荐吗?

您实际上只是使用了一个普通组件,然后创建了一个包含突变的突变文件。 运行 中继编译器为突变创建 graphql 片段,然后在表单提交中调用突变。突变确实需要你的环境。这是中继现代文档:

https://facebook.github.io/relay/docs/mutations.html

您需要将突变的结果存储在某处,然后将授权令牌附加到您的下一个请求中,但这并不难做到。只是 onCompleted 并将结果存储在某处。

您的环境应该是一个单独的文件,您可以为突变和查询呈现导入该文件。只有 paginationContainer 从 queryRenderer 继承环境。