因此,如果一个数据的名称被发现为,那么我希望在一个react组件中选择" update“路径,如果”i有另一个" if (a window.confirm)",那么在这个中,如果用户确认,那么执行以完成更新。在这个组件中,我有常规的“添加”与"update“并行的新数据路径,正如前面提到的,它包含两个嵌套的(如果是的条件)。我给你看下面的代码。到目前为止,似乎所有的ifs都不能正确工作。首先,如果在执行之后,继续运行到"add"函数,那么window.confirm,不管是确认还是取消,也做“添加”。你能告诉我该怎么调整吗?
const addName = (event) => {
event.preventDefault()
const nameObj = {
name: newName,
number: newNumber,
id: nanoid()
}
if (persons.find((person)=> person.name === newName)){
const id = persons.find(person=>person.name===newName).id
const changedPerson = {...nameObj, number: nameObj.number}
if (window.confirm(`${newName} already there`)) {
personService
.update(id, changedPerson)
.then(returnPerson=>{
setPersons(persons.map(person => person.id === id ? person : returnPerson))
setNewName('')
setNewNumber('')
return
})
}
}
personService
.create(nameObj)
.then(returnPerson=>{
setPersons(persons.concat(returnPerson))
setNewName('')
setNewNumber('')
console.log('added', nameObj)
})
}发布于 2022-02-24 12:04:51
在第一个return的关闭}结束之前添加一个else,如果您选择不添加else,
如果不添加返回(退出函数),它将继续执行personService.create()
您现在有一个return,但这是返回承诺,而不是返回函数。
例如
if (persons.find((person)=> person.name === newName)){
.......// do something
return; // you need the return here
} else {
//codes here will not execute if you don't add the above return
}
//codes here will continue to execute if you don't add the above returnhttps://stackoverflow.com/questions/71251633
复制相似问题