Как пройти состояние, чтобы реагировать на интерфейс, после нажатия на ссылку активации электронной почты - PullRequest
0 голосов
/ 07 февраля 2019

Использование ReactJS и Django REST Framework. Я создаю приложение, в котором пользователи могут зарегистрироваться.

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

Поток A: Отправить форму регистрации -> пользователь получает ссылку для активации по электронной почте -> сообщение (новая вкладка) -> форма входа

Новая вкладка, открывающаяся после нажатия на ссылку активации электронной почты, является ключевым аспектом, поскольку это означает, что я начинаю заново с новым состоянием.

Сейчас.Моё усложнение, приложение, над которым я работаю, дает пользователям возможность заполнить корзину.Затем они могут запросить расценки.

Поток B: Корзина покупок -> пользователь нажимает «запрос расценки» -> обзор / подтверждение расценок

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

Поток C: Корзина -> пользователь нажимает «запросить расценки» -> страница, запрашивающая пользователявойдите или зарегистрируйтесь

Когда они выберут опцию регистрации, они будут перенаправлены на страницу регистрации и перейдут к процессу регистрации, который я описал ранее.

Теперь, чего я хочу добитьсядля перенаправления пользователя на страницу обзора / подтверждения котировки после процесса регистрации.Это страница, на которой они оказались бы в потоке B.

Но проблема в том, что я теряю все состояние, так как открывается новая вкладка.

Итак, я думаю, что путьсправиться с этой ситуацией - значит сохранить необходимое состояние внешнего интерфейса на серверном.Например, сессий.

Мой вопрос: Существуют ли какие-либо шаблоны проектирования, относящиеся к этой (типовой) ситуации?

Я могу решить эту проблему, но хочурешите это чистым, правильным способом.

1 Ответ

0 голосов
/ 07 февраля 2019

Вы можете сохранить вещи, которые вы хотите пережить, перезагрузить полную страницу или открыть новую вкладку внутри IndexDB, LocalStorage или Cookie, и просто прочитать эту информацию, когда приложение снова будет смонтировано, и предварительно заполнить состояние из него.

ПРИМЕЧАНИЕ. IndexDB - самое передовое решение, наихудшее на основе поддержки браузеров, LS работает во всех современных браузерах, файлы cookie будут работать где угодно.

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

Например, в случае, если пользователь нажимает на ссылку активации электронной почты, которая ведет к маршруту, который может быть, например, следующим: /registration/:token

Вы смонтируете компонент, который покажет сообщение пользователю как "Вы успешно подтвердили свою электронную почту »и перенаправили их на страницу входа.Однако вы можете предварительно заполнить состояние информацией о корзине из одного из упомянутых выше решений.

После успешного входа в систему вы можете проверить состояние, если корзина пуста, и выполнить перенаправление по умолчанию (домашняя страница).(Например, «Профиль пользователя» или «Панель администратора»), или, если есть что-то в редукторе корзины, вы можете перенаправить пользователя на обзор цитаты напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...