Поток с несколькими запросами ajax
У меня есть компонент React, <Profile/>
, для отображения текущего выбранного пользователя.
на componentDidMount
а также componentWillUpdate
Я проверяю магазин Flux для пользователя.
Если пользователь отсутствует, или если пользователь существует, но его userId
не соответствует userId
в URL я называю действие Flux getUser(userId)
,
Проблема в том, что этот вызов может быть запущен несколько раз из-за componentWillUpdate
вызывается несколько раз.
Мое временное исправление состоит в том, чтобы отслеживать ожидающие запросы ajax, основанные на userId
и если один уже идет, я не выдаю другой.
Хотя это кажется хакерским, и мне интересно, является ли это распространенной проблемой (и рекомендуемым решением) или моя архитектура нуждается в улучшении.
2 ответа
Вы не должны звонить в магазин Flux в componentWillUpdate
, componentWillUpdate
для любых приготовлений, которые вам нужно сделать перед рендерингом. К тому времени, когда React звонит componentWillUpdate
он уже определил, что что-то (реквизит или состояние) изменилось, и что компонент должен обновиться, так что сейчас не время для получения дополнительных данных.
Вместо этого вы должны позвонить в магазин Flux в componentWillReceiveProps
(при условии, что идентификатор пользователя передается как компонент в компонент).
То, что вы пытаетесь сделать, это логика приложения, а не логика представления. Поэтому лучше перенести свою логику в действие / хранилище (обратитесь к архитектуре потока, чтобы узнать больше о хранилищах) и генерировать событие, как только вы получите ответ, который обновит компонент представления.