2017-08-21 29 views
2

我正在使用Relay Modern构建一个应用程序,作为我第一次真正进入React,Relay和GraphQL的应用程序。没有数据的中继容器

基本情况是,我有一个登录表单组件,它并不需要任何数据;也就是说,组件呈现一个表单,并且具有相应的突变,但不需要查询任何内容。

当调用createFragmentContainer时,似乎提供中继样式查询片段是必需的,这又确保this.props.relay在组件上下文中不会是null

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

我的问题 - 有没有一种方法来实质上传递一个“空”的继电器片段?还是在这种情况下推荐一些更好的成语?

回答

2

你实际上只是使用一个正常的组件,然后创建一个突变文件,其中有突变。运行relay编译器为突变创建graphql片段,然后以submit形式调用突变。突变确实需要你的环境。这里是继电器现代文档:

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

你需要存储一些突变的结果,然后将身份验证令牌附加到你的下一个请求,但这不应该是太难的事情。刚刚完成并将结果存储在某处。

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

+0

大部分我已经手中。我的突变在它自己的文件中并且工作正常。真正唯一的问题是如何在非中继组件的环境中获得'环境',这听起来像你给我的线索。我将探索 – metahamza

+0

是你手动设置的环境,然后你在queryrender或突变中使用它。在这种情况下,只需导入您的现有环境并再次使用它。这是我做到这一点:https://github.com/aljones15/RelayMapToDo/blob/master/src/ToDoList/CreateToDoMutation.jsx – liminal18

+0

谢谢,这工作! – metahamza