функция dispatch вызывается для других действий каждый раз, когда updateIntl отправляется с использованием response-intl-redux - PullRequest
0 голосов
/ 04 декабря 2018

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

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)
        }
...