У меня есть избыточное действие, и когда оно отправляется, оно извлекает данные из внешней службы.В ответ я получаю данные от бэкэнда.Я использую атрибут кода страны и передаю его в качестве аргумента в качестве аргумента локали.
fetch(`/api/article/${id}`)
.then(response => response.json())
.then((json) => {
dispatch(
updateIntl({
locale: locales[json.countryCode],
messages: formatLocaleObject(json.countryCode),
}),
)
dispatch(saveSettings(json.settings))
dispatch(saveData(json.eta))
})
})
Когда страница загружается, я отправляю действие, которое выбирает статью.Я использую код страны, полученный из ответа, в качестве аргумента для обновления правильной локали.Я ожидаю, что он будет вызван один раз, но когда я отправляю updateIntl, он снова отправляет то же действие, которое используется для получения статьи.Причинение ненужной пропускной способности и времени загрузки страницы.
После некоторых исследований я обнаружил, что проблема заключается в том, что мой метод componentDidMount вызывается дважды, когда я вызываю updateIntl ()
componentDidMount() {
const {
match,
fetchArticle
location,
} = this.props
const id = queryString.parse(location.search).id
fetchArticle(id)
}