2015-07-26 2 views
1

У меня есть компонент, который обтекает входной сигнал формы. Для совместного редактирования мне нужно следить за изменениями не только за текст, но и за положение каретки. Частично позиция каретки будет определяться событием selectionchange, и его также можно изменить с помощью некоторых сочетаний клавиш.Обновление позиции каретки в хранилище Flux

Теперь я думаю, как поместить это в архитектуру Flux. Я имею в виду, когда эта позиция меняется, я должен отправить действие, которое обновляет хранилище соответственно, не так ли? Затем выполняется повторная рендеринг, и входной компонент обертывания считывает информацию о позиции каретки и обновляет ее в DOM.

Теоретически это должно получиться хорошо, но представьте, что я буду обновлять позицию каретки каждый раз, когда пользователь набирает письмо. Для быстрых программистов это может вызвать проблемы, так как каретка будет прыгать назад там, где это не должно.

Я мог бы выполнить некоторые действия по разрыву и отправке только после некоторого времени, когда пользователь перестает печатать, но это вряд ли является надежным решением.

Так что мне интересно, как это можно сделать зрелым способом. Единственное, что приходит мне в голову - это отметить отправку действий, если это было вызвано типизацией или сочетаниями клавиш и просто игнорировать прежние. Это правильный подход или вы бы порекомендовали что-нибудь еще?

+0

Можете ли вы подробнее рассказать о том, почему быстрая типизация привела к тому, что положение каретки перестало бы синхронизироваться, если вы отправляете на каждое нажатие клавиши? – lukewestby

ответ

2

Теоретически это должно получиться хорошо, но представьте, что я буду обновлять позицию каретки каждый раз, когда пользователь набирает письмо. Для быстрых программистов это может вызвать проблемы, так как каретка будет прыгать назад там, где это не должно.

Не было бы такой проблемы. Отправка действия не отличается от обновления состояния компонента React при каждом нажатии клавиши, который работает очень хорошо. Поскольку отправки синхронны, состояние всегда будет актуальным, и карет не будет прыгать.

+0

Да, вы на самом деле помогли мне с этим раньше, и он уже работает для меня, поэтому еще раз спасибо :) – FredyC