2017-03-28 78 views
1

我正在尋找一個歷史記錄重做/存儲重置爲以前的狀態還原反應應用程序。在React Redux中實現撤銷狀態更改(撤消存儲/歷史實現)的最佳方法

我發現一個blog告訴它可以通過將當前,未來和過去的狀態存儲在堆棧中並相應地重置來完成。

我也發現了類似的questionStackOverflow,但它沒有給我一個正確的答案,或者我可能很難理解。

我已經構建了一個演示ToDo app並使用redux-logger來記錄存儲細節與以前的狀態和更新狀態。你可以在這裏找到code

我們是否在redux中有一個商店重置方法,這樣我們就可以獲得以前的狀態並更新其他商店,包括現在,過去和將來的狀態?

回答

2

什麼是最好的辦法......

最好的辦法是始終難以界定,這真的取決於你的使用情況和要求,包括客戶端和服務器。

但是,要開始,你,你可以考慮使用圖書館或看他們是如何解決這個問題,一些示例:

https://github.com/omniscientjs/immstruct

https://www.npmjs.com/package/redux-undo

https://github.com/PowToon/redux-undo-redo

與實例教程待辦事項的撤消/重做的REDX: https://github.com/reactjs/redux/tree/master/examples/todos-with-undo

或者你可以實現你自己的,因爲你可以存儲所有的應用程序狀態。一個簡單的堆棧可能是一個簡單而有效的方式來存儲你的應用程序狀態在任何給定的時間。

let yourHistry = [state1, state2, state3]; 
+0

所以我認爲存儲以前的狀態是唯一的方式,像下面。 { 過去:[... pastStatesHere ...], 本:{... currentStateHere ...}, 未來:[... futureStatesHere ...] } – sudheeshcm

+0

存儲該狀態是一種常見的方式,但是你可以探索不同的場景,例如使用稱爲命令模式的設計模式(即使我相信它在redux中不需要)。 – GibboK

+0

@sudheeshcm如果你發現我的答案有用,請考慮接受/ upvote使用本答案左側的圖標。謝謝! :) – GibboK