我有一个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)
}