2015-11-04 67 views
3

使用Immutable和Flux實現獲取撤消/重做功能基本上是微不足道的。這部分是由於Immutable所帶來的價值傳遞,部分原因是由於使用Flux的瀏覽器/內存本質。使用Relay-GraphQL突變進行撤銷 - 重做狀態遍歷的​​模式

然而,根據Relay-GraphQL突變來概念化這一點並不明顯。是否有任何已知的模式可以簡化這一點?

+0

你能澄清一下用例嗎?撤銷/重做是爲了啓用調試還是提供面向用戶的撤銷/重做突變的動機? –

+0

@JoeSavona用例基本上是撤消 - 重做功能。但是自從發佈這個問題以來,我越來越多地瞭解了GraphQL/Relay,看起來這種功能可能超出了他們的範圍。有意思的是,在*範圍內的任何事情上都會記住這一點,並且會幫助這種類型的功能。 –

+0

@JoeSavona感謝您的工作和時間。這些都是很棒的項目。 –

回答

4

繼電器不能(還)做本地狀態。因此,您目前的選擇是:a)在Flux商店中存儲「草稿」變更或b)創建一個草稿類型,通過突變不斷創建新版本。您可以跟蹤客戶端中的新草稿ID並通過恢復活動草稿標識來「撤消」。

+0

要添加到此,我建議使用非常小的庫[immutable-diff](https://www.npmjs.com/package/immutable-diff)和[immutable-patch](https://www.npmjs.com/package/immutable-diff)在前端存儲突變,然後您可以將整合的補丁列表發送到後端以執行實際突變。 –