提问人:Srilatha Danalakota 提问时间:9/29/2023 更新时间:9/29/2023 访问量:28
仅当 Promise 在 onChange 事件中解析时触发 onChange 事件
Fire onChange event only if Promise resolves in the onChange event
问:
const validate(id){
retun new Promise((resolve,reject)=>{
axioscall()
.then((res)=> resolve(res))
.catch((err)=>reject(err))
}}
我有上面的承诺。并且仅当我的承诺解决或抛出被我的承诺拒绝的错误时,我才尝试调用 onChange 事件
<checkbox onChange={(e)=>
validate(id)
.then((result) => result && handleChecked(e,id))
.catch((err)=>showError(err))/>
错误已成功抛出,但当 promise 解析时,handleChecked 事件不成功。我的意思是复选框没有被选中。
错误已成功抛出,但当 promise 解析时,handleChecked 事件不成功。我的意思是复选框没有被选中。问题是什么..如果我像下面这样写,事件被触发并选中复选框,但如何处理失败场景以显示错误。如何修改上述代码以处理成功和失败场景?
<checkbox onChange={(e)=>
validate(id) && handleChecked(e,id))
/>
答:
1赞
Arash jahan bakhshan
9/29/2023
#1
您可以使用状态控制输入。
const MyComponent = () => {
const [value, setValue] = useState(false)
const handleChange = async () => {
const isValid = await validate(id)
if(isValid) {
setValue(prev => !prev)
}
}
<input type="checkbox" onChange={handleChange} checked={value} />
}
要发出HTTP请求,最好使用第三方库,例如OR,它为您提供了帮助程序来跟踪请求,向用户显示加载程序,处理错误等等。react-query
swr
评论
validate()
return axioscall(...)
new Promise(...)