Я пытаюсь реализовать отмену / повтор в сложном приложении. Вот так выглядит мой массив истории.
[
{
action:“added”,
payload:{
id:"32132132",
data: "JSON.Stringify(JSON.parse(data))) initial data getting from initial app setup"
}
},
{
action:“updated”,
payload:{
id:"32132132",
data: "getting the diff"
}
},
{
action:“deleted”,
payload:{
id:"32132132",
data: "data"
}
}
]
Насколько я понял, отмена повторения работает с индексом истории, который будет быть измененным на основе отмены (указатель приращения), концепции повторения (указатель приращения).
Основываясь на этом подходе, я называю мутацию, в которой
apply(state,actiontype){
if(actiontype==undo){
remove the respective objects
pop(data) //pops the data out of other places in the application not the history
historyindex++;
}else if(actiontype==redo){
get the data from history
unshift(data);
historyindex–-;
}
}
Я чувствую, что это не самый эффективный способ выполнения операций отмены / повтора, поскольку он включает в себя клонирование объектов и даже должен обрабатывать огромные наборы данных. Что может привести к зависанию приложения. Я все еще новичок ie в vuejs. Пожалуйста, исправьте меня, если я ошибаюсь, есть ли более эффективный способ выполнения операций отмены повторения? или правильный способ отменить / повторить в vuejs ?. Любые предложения будут полезны