reactjs - 没有数据的中继容器

标签 reactjs graphql relay relaymodern

我正在使用 Relay Modern 构建一个应用程序,作为我第一次真正尝试 React、Relay 和 GraphQL。

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

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

现在,我正在使用标准(非 Relay)React 组件作为登录表单,但因此我无法访问 Relay 环境以将其传递给突变。

我的问题 - 有没有办法本质上传递“空”中继片段?或者在这种情况下有推荐更好的习惯用法吗?

最佳答案

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

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

您需要将突变的结果存储在某处,然后将身份验证 token 附加到您的下一个请求中,但这应该不是很难做到的。只需 onCompleted 并将结果存储在某处。

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

关于reactjs - 没有数据的中继容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45802064/

相关文章:

javascript - 将 redux 存储连接到 nextjs 布局

javascript - 如何将文件编码为 base64,然后使用 JS 作为多部分文件上传到后端 api?

postgresql - 将 Gatsby 与 Postgres 连接起来

ruby-on-rails - 使用 graphql-ruby 包含/急切加载相关模型

javascript - 使用 RelayJS 中的数据通过 React JS 过滤名称列表,而不调用 GraphQL

express - GraphQL + 中继 : How can I perform authorization for refetching?

java - react-native-admob 中的错误,有人可以帮助我吗?

javascript - ReactJS HREF 导致状态丢失

javascript - 使用复合键的 DataLoader

reactjs - Apollo 客户端和 Relay 有什么区别?