我有一个交互式的基于网络的可视化。我希望允许用户在与可视化交互时能够撤销。我注意到有些人建议编写我自己的撤销函数,但在我的例子中,这可能真的很困难(有很多不同的事情需要跟踪)。如何在每次交互之后保存整个应用程序的最后状态?有什么想法吗?
谢谢,
发布于 2016-05-25 01:33:05
您可以使用更多的状态驱动方法,并使用一些类似于React + Redux的工具,但听起来您已经有了一个您不想重新创建的现有应用程序。
在这种情况下,它实际上取决于您的数据是什么样子。它是一个JSON对象吗?在这种情况下,您可以一次又一次地克隆对象,这些对象将“保存”以前的状态。
您可以实现一个数据库,并使用时间戳和/或版本号保存所有所需数据的副本,以便回滚。这显然会导致大量的数据重复。
另一种方法是跟踪所有修改数据的事件,然后执行与该事件相反的操作。作为一个非常基本的例子,我把数字15加到我的“总数”中。如果我想撤销这一点,我会减去15。但是,只有在对所有数据执行操作时,这才有效。如果要将此应用于不同类型的数据,则可以将事件与前一个值一起存储。
我把我的名字从“鲍勃”改为“吉姆”。事件可以是一个对象:
{
event: "stringChange",
prop: "name",
prev: "Bob",
new: "Jim"
}这会给你所有你需要的东西来撤销你的零钱。
这里有很多选项,这取决于您的数据是什么样子,以及您如何操作它。
https://stackoverflow.com/questions/37426337
复制相似问题