Реализация отмен / повторов в массиве объектов с использованием vuex - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь реализовать отмену / повтор в сложном приложении. Вот так выглядит мой массив истории.

[
{
  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 ?. Любые предложения будут полезны

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Вы должны рассмотреть возможность использования какого-либо сжатия данных (как git делает), при этом вы можете продолжать использовать только Vuex. В противном случае рассмотрите возможность использования некоторой локальной базы данных, как уже рекомендовано; D

0 голосов
/ 26 апреля 2020

вы можете захотеть подключить ваше приложение к любой простой базе данных, в которой хранится ваш предыдущий объект, попробуйте firebase, если у него нет внутреннего интерфейса, и у vuex просто будет предыдущее значение, но более старые сохраняются в базе данных firebase методом мутации в vuex * 1001. *

...