【发布时间】:2020-07-22 16:10:43
【问题描述】:
我有两个共享错误状态的函数。我需要 componentDidUpdate 函数中的 setState 根据之前的状态更新错误状态。这是因为目前我可以得到 2 个错误状态,这取决于生命周期函数的调用时间。
state = {
word: this.props.word,
error: '',
}
async componentDidMount() {
const word = this.props.match.params.word;
try{
const data = await MerriamAPI.getWordInfo(word);
if (data.length && data[0].fl && data[0].meta.stems && data[0].hwi.prs[0].mw && data[0].shortdef[0]) {
this.setState({
word: word,
error: '',
})
}
else {
console.log("Error")
this.setState({error:'Word Not Found'})
}
}
catch {
this.props.setModal('Offline');
}
}
async componentDidUpdate() {
const word = this.props.match.params.word;
if (word != this.state.word){
try{
const data = await MerriamAPI.getWordInfo(word);
if (data.length && data[0].fl && data[0].meta.stems && data[0].hwi.prs[0].mw && data[0].shortdef[0]) {
this.setState({
word: word,
error: '',
})
}
else {
// Need to set this based on previous value
this.setState({error: 'Word Not Found'})
}
}
catch {
this.props.setModal('Offline');
}
}
}
【问题讨论】: