Поток с несколькими запросами ajax

У меня есть компонент React, <Profile/>, для отображения текущего выбранного пользователя.

на componentDidMount а также componentWillUpdateЯ проверяю магазин Flux для пользователя.

Если пользователь отсутствует, или если пользователь существует, но его userId не соответствует userId в URL я называю действие Flux getUser(userId),

Проблема в том, что этот вызов может быть запущен несколько раз из-за componentWillUpdate вызывается несколько раз.

Мое временное исправление состоит в том, чтобы отслеживать ожидающие запросы ajax, основанные на userIdи если один уже идет, я не выдаю другой.

Хотя это кажется хакерским, и мне интересно, является ли это распространенной проблемой (и рекомендуемым решением) или моя архитектура нуждается в улучшении.

2 ответа

Решение

Вы не должны звонить в магазин Flux в componentWillUpdate, componentWillUpdate для любых приготовлений, которые вам нужно сделать перед рендерингом. К тому времени, когда React звонит componentWillUpdate он уже определил, что что-то (реквизит или состояние) изменилось, и что компонент должен обновиться, так что сейчас не время для получения дополнительных данных.

Вместо этого вы должны позвонить в магазин Flux в componentWillReceiveProps (при условии, что идентификатор пользователя передается как компонент в компонент).

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

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