每次使用react-intl-redux调度updateIntl时,将在其他操作上调用调度函数

时间:2018-12-04 08:25:27

标签: javascript reactjs redux react-intl

我有一个redux动作,当它分派时,它从外部服务获取数据。在响应中,我从后端获取数据。我使用国家/地区代码属性,并将其作为语言环境参数传递给该参数。

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时,它将再次调度用于获取文章的相同操作。造成不必要的带宽和页面加载时间。

经过研究,我发现问题是当我调用updateIntl()时,我的componentDidMount方法被调用了两次

componentDidMount() {
            const {
                match,
                fetchArticle
                location,
            } = this.props

            const id = queryString.parse(location.search).id

            fetchArticle(id)
        }

0 个答案:

没有答案