我正在使用 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/