У меня есть компонент, который обтекает входной сигнал формы. Для совместного редактирования мне нужно следить за изменениями не только за текст, но и за положение каретки. Частично позиция каретки будет определяться событием selectionchange
, и его также можно изменить с помощью некоторых сочетаний клавиш.Обновление позиции каретки в хранилище Flux
Теперь я думаю, как поместить это в архитектуру Flux. Я имею в виду, когда эта позиция меняется, я должен отправить действие, которое обновляет хранилище соответственно, не так ли? Затем выполняется повторная рендеринг, и входной компонент обертывания считывает информацию о позиции каретки и обновляет ее в DOM.
Теоретически это должно получиться хорошо, но представьте, что я буду обновлять позицию каретки каждый раз, когда пользователь набирает письмо. Для быстрых программистов это может вызвать проблемы, так как каретка будет прыгать назад там, где это не должно.
Я мог бы выполнить некоторые действия по разрыву и отправке только после некоторого времени, когда пользователь перестает печатать, но это вряд ли является надежным решением.
Так что мне интересно, как это можно сделать зрелым способом. Единственное, что приходит мне в голову - это отметить отправку действий, если это было вызвано типизацией или сочетаниями клавиш и просто игнорировать прежние. Это правильный подход или вы бы порекомендовали что-нибудь еще?
Можете ли вы подробнее рассказать о том, почему быстрая типизация привела к тому, что положение каретки перестало бы синхронизироваться, если вы отправляете на каждое нажатие клавиши? – lukewestby