2017-08-21 27 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