2016-07-21 5 views
1

Это больше вопрос архитектора с mind.js.React architecture

Где я могу разместить следующую бизнес-логику?

Как только пользователь выполнил аутентификацию, и затем мы получим доступ к их пользовательскому объекту. Я хотел бы проверить значение на объекте пользователя, и если нулевое заполнение будет иметь данные, которые я могу получить только на клиенте, а затем исправить этот объект. Весь код для получения, исправления объекта находится в хранилищах alt.js. Но это бизнес-логика и не кажется правильным, что это часть магазина.

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

ответ

0

Вы уже использовали context?

Вы можете создать компонент контекста с помощью функции getUser. Этот компонент будет обрабатывать всю бизнес-логику для пользователя.

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

Вы просто импортируете getUser через контекст, и вы можете использовать эту функцию. IE любой компонент, который должен знать контекст пользователя, может сделать что-то вроде этого.

componentDidMount() { 
    this.context.getUserInfo((data) => this.setState({ user: data })) 
} 

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

Вместо этого создайте его как контекст и импортируйте его по мере необходимости.

Если это кажется полезным, я приведу пример.

Кроме того, вы можете оформить в react docs

1

Это на самом деле не заботой Реагировать, как вы сказали, что больше архитектурного выбора.

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

Если вы еще не использовали Redux, я бы очень рекомендовал его! Хотя, это не always the best choice, похоже, это работает на 99% моих случаев использования!

Удачи вам!

+0

OP уже использует реализацию потока ... – Maxwelll