问题是我不确定继续前进到第二个功能之前如何等待第一个功能完成。因此,当我尝试使用第二个功能更改视图时,显示的数据不会更新。
updateEntry = (newHeader, newBody, index) => {
fetch("http://localhost:3000/update", {
method: 'PUT',
body: JSON.stringify({
header: newHeader,
body: newBody,
index: index
}),
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then(data => { this.setState({journalDb: data })})
}
initiateUpdate = (e) => {
e.preventDefault();
this.props.updateEntry(value1, value2, value3)
this.props.setEditMode();
}
问题是我的父级状态没有及时更新,以显示当我使用 setEditMode()更改路线时...我不确定如何等待父级状态在运行此
之前进行更新答案 0 :(得分:0)
所以您可以做的就是这样
updateEntry = (newHeader, newBody, index) => {
return new Promise((resolve) =>fetch("http://localhost:3000/update", {
method: 'PUT',
body: JSON.stringify({
header: newHeader,
body: newBody,
index: index
}),
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then(data => {
this.setState({journalDb: data })
resolve()
})
})
,只需添加
initiateUpdate = (e) => {
e.preventDefault();
this.props.updateEntry(value1, value2, value3)
.then(() => this.props.setEditMode());
}
这样,您可以确保在调用setEditMode时updateEntry已完成
答案 1 :(得分:0)
只需更改您的updateEntry
函数以返回获取的结果,因为这是一个承诺。例如:
updateEntry = (newHeader, newBody, index) => fetch("http://localhost:3000/update", {
然后,当您调用父函数时,将其视为一个承诺:
this.props.updateEntry(value1, value2, value3).then(() => {
this.props.setEditMode()
})