我在我的React/Relay應用程序中使用了一個表單來修改某些字段。每次輸入新的字母時,我都不想發送服務器更新。我如何使用Relay來支持應用程序狀態,而無需一直推送到服務器?在閱讀了大部分的Relay文檔之後,我認爲必須將Relay狀態基本上覆制到表單的本地狀態或其他Flux存儲區,然後在其中更改它,然後將其提交到Relay。這似乎是很多額外的工作,但只是爲了保持本地的狀態。如何在不推送到服務器的情況下更新中繼商店
回答
繼電器當前版本是graphQL和React之間的粘合劑,它只處理來自服務器的數據。
......在我看來,我有到中繼的狀態,以 基本上覆制到自己的狀態的局部狀態...
我看不到的問題。 React的工作方式要求您爲整個表單或每個輸入單獨存儲state
。
如果您添加編輯功能(渲染表單和提取數據以填充用戶輸入以更改它們),則無論如何,所有中繼數據都可以在表單級別上以this.props.RelayFragmentName
的形式獲得。
您將它傳遞給您將其分配給state
並且圓圈完成的輸入。您也可以直接從props
(無需將數據分配到輸入state
)並通過方法從輸入更改表格state
來輸入輸入。
現在當用戶進行更改並確認後,您只需再次收集所有state
即可進行變更。
我認爲它是一個完整的圓形,如果設置了所有的默認設置,它基本上是牢不可破的。
繼電器有勢在必行API來獲取,直接添加或更新緩存,但它是比較髒,很少使用(尤其是地方國有)。它用於WebSocket等功能,您希望將更新從服務器推送到客戶端並手動更新緩存。
當前中繼僅用於處理服務器數據。中繼2有一個本地緩存,但它還沒有結束。
如果我們談論的是不同的東西,或者你可以使用一些代碼示例,讓我知道。
嘿,謝謝你的回答。我認爲我們在談論同樣的事情,儘管我很喜歡看到'RelayFragmentName'的用法,以前沒有看到過。我想我只是覺得我想直接在繼電器中使用API並改變狀態,這會以道具的形式傳遞一切,並讓組件成爲無狀態。我只是不一定希望每個中繼狀態更改都會導致網絡請求。 –
在接力現代,你可以使用commitLocalUpdate
來做到這一點。
例如
onEmailChange = (email) => {
commitLocalUpdate(environment, (proxy) => {
const userProxy = proxy.get(this.props.user.__id);
userProxy.setValue(email, 'email');
});
}
太棒了!我看到回購中的功能,但是有沒有關於它的文檔? –
@MatthewHerbst不,我無法在他們的官方文檔中找到它,雖然這會起作用,但應該使用正常的組件狀態,除非希望這些更改在輸入更改時反映到另一個組件中。 –
- 1. 如何在不刷新頁面的情況下將新的HTML數據從服務器推送到瀏覽器
- 2. 在不關閉的情況下將更新推送到Apache服務器的最有效方式是什麼?
- 3. 將商店更新寫回服務器
- 4. 如何在不拉動的情況下推送新分支
- 5. 如何在不刷新網頁的情況下從服務器接收更新
- 6. 如何在沒有--set-upstream的情況下推送遠程服務器上不存在的新分支?
- 7. 如何在不登錄服務器的情況下重新啓動sshd服務?
- 8. 在不使用GCM的情況下爲Android創建推送通知服務器
- 9. 是否可以在不使用JavaScript的情況下進行服務器推送?
- 10. 如何在不中斷服務的情況下部署更改?
- 11. 如何推送到github的github更新我的服務器
- 12. 在這種情況下推送通知服務的可用性?
- 13. 如何將SQLCLR更新推送到您的(CI)服務器
- 14. 在沒有實際數據更改的情況下告訴商店更新
- 15. 如何顯示不經刷新從服務器推送到網頁的更新?
- 16. 在不更改ID的情況下在服務器上運行
- 17. 在不更新Web.config的情況下添加WCF Web服務
- 18. 在不降低minSdkVersion的情況下更新播放服務
- 19. 在不重新啓動服務的情況下更改jobcron
- 20. 如何輕鬆將更新推送到服務器?
- 21. 蘋果:如何在沒有商店的情況下分發?
- 22. 如何在沒有iPhone的情況下測試Apple推送通知服務?
- 23. 如何與服務器同步以使中繼商店保持最新狀態?
- 24. 如何在不創建服務器的情況下測試服務器響應?
- 25. 從服務器推送更新
- 26. 將模型推送到商店時更新視圖
- 27. 如何在不使用服務器的情況下運行node.js
- 28. 如何在不重啓服務器的情況下清除ehcache
- 29. 在沒有訪問源服務器的情況下實現Apple推送通知
- 30. 在沒有Google Play商店的情況下安裝Google Play服務?
您可以設置狀態的組件或使用本地存儲喜歡終極版。據我所知,您不能以您描述的方式在本地更新中繼商店。最近我經歷了類似的情景,我很樂意予以糾正。我個人認爲,當涉及表單時,不僅要保持本地狀態,而且要使用本地存儲保持狀態(如果用戶刷新頁面或稍後返回完成狀態),但這可能不適合你的用例在這裏。 – alexi2