Врезать лишние действия в историю

Дерево Redux - это в значительной степени список действий и состояние, полученное из этих действий.
Что-то вроде этого:

{ type: "INIT", number: 2 }
{ type: "ADD", addend: 4 }
{ type: "MULTIPLY", factor: 2 }
{ type: "SUBTRACT", subtrahend: 3 }

store.getState() // returns { number: 9 }

Проект, с которым я работаю, должен позволять вставлять новое действие в середину этого журнала. Например, добавив "РАЗДЕЛИТЬ на четыре" после НЕСКОЛЬКО и до СУБТРАКТА. Это действие необходимо будет вставить в историю, а затем воспроизвести любые последующие действия.

Этот пример "калькулятора" определенно упрощен, но, надеюсь, вы поняли идею.

Это допустимый вариант использования Redux? Существует ли библиотека или общая техника, разработанная с учетом этого типа потока действий?

1 ответ

Увидел, что вы задали этот вопрос вчера на Reddit, и я уже ответил на него там, но я приведу ответ здесь для полноты:

Да, есть несколько существующих библиотек дополнений Redux для работы с возможностями отмены / повторного типа. Посмотрите раздел Use Cases#Undo/Redo моего каталога дополнений Redux.

Хотя я сам не использовал ни одного из них, я подозреваю, что наиболее подходящим для вашего случая использования является библиотека, которую Microsoft выпустила, называемая redux-dag-history. К сожалению, библиотека не очень хорошо документирована, но авторы написали сообщение в блоге, в котором обсуждались концепции библиотеки.

Вы также можете проверить внутреннюю реализацию средства улучшения хранилища Redux DevTools, которое в основном выполняет такую ​​работу, но на самом деле предназначено только для разработки. Вы можете использовать его повторно или изменить, чтобы он лучше подходил вашему варианту использования.

Другие вопросы по тегам