【发布时间】:2021-11-08 22:42:40
【问题描述】:
我正在一个待办事项列表中调用一个 completeTask 函数
</IconButton>
{task.isComplete ? (
<Button
startIcon={<UndoIcon />}
onClick={() => completeTask(task.id)}
>
Mark as not complete
</Button>
) : (
<Button
startIcon={<CheckIcon />}
onClick={() => completeTask(task.id)}
>
Complete Task
</Button>
)}
但是,当我点击完成时,json 服务器数据库会更新,但 UI 不会更新,直到第二次点击
const completeTask = async (id) => {
const taskToToggle = await fetchTask(id)
const updTask = {...taskToToggle, isComplete: !taskToToggle.isComplete}
const res = await fetch(`http://localhost:8000/tasks/${id}`, {
method: 'PUT',
headers: {
'Content-type' : 'application/json'
},
body: JSON.stringify(updTask)
})
const data = await res.json()
setTasks(
tasks.map((task) =>
task.id===id ? {...task, isComplete:!data.isComplete} :task
)
)
我做错了什么,如何确保用户界面在每次点击后重新呈现?
【问题讨论】:
标签: reactjs state json-server