consistent-return for useEffect
consistent-return for useEffect
当我做这样的事情时
useEffect(() => {
if (steps.step2 && !requestKey) {
const timeoutId = setTimeout(() => startProcess(), 500)
return () => clearTimeout(timeoutId)
}
}, [steps, requestKey, startProcess])
eslint 抱怨我 error Expected to return a value at the end of arrow function consistent-return
return () => clearTimeout(timeoutId)
因为当我评论这个错误消失了。
// return () => { clearTimeout(timeoutId); }
如何解决这个问题,有什么想法吗?
当我在 useEffect(() => {...})
末尾添加这个 return () => {}
现在 eslint 不会抱怨这个了。
useEffect(() => {
if (steps.step2 && !requestKey) {
const timeoutId = setTimeout(() => startProcess(), 500)
return () => clearTimeout(timeoutId)
}
+ return () => {}
}, [steps, requestKey, startProcess])
如果您 return 至少在一个分支中,您需要始终 return 一个值以遵循规则。它不一定是一个函数,它只需要是独立语句 return
以外的东西。这也有效:
useEffect(() => {
if (steps.step2 && !requestKey) {
const timeoutId = setTimeout(() => startProcess(), 500)
return () => clearTimeout(timeoutId)
}
return undefined;
}, [steps, requestKey, startProcess])
另请注意,setTimeout(() => startProcess(), 500)
简化为 setTimeout(startProcess, 500)
。
当我做这样的事情时
useEffect(() => {
if (steps.step2 && !requestKey) {
const timeoutId = setTimeout(() => startProcess(), 500)
return () => clearTimeout(timeoutId)
}
}, [steps, requestKey, startProcess])
eslint 抱怨我 error Expected to return a value at the end of arrow function consistent-return
return () => clearTimeout(timeoutId)
因为当我评论这个错误消失了。
// return () => { clearTimeout(timeoutId); }
如何解决这个问题,有什么想法吗?
当我在 useEffect(() => {...})
末尾添加这个return () => {}
现在 eslint 不会抱怨这个了。
useEffect(() => {
if (steps.step2 && !requestKey) {
const timeoutId = setTimeout(() => startProcess(), 500)
return () => clearTimeout(timeoutId)
}
+ return () => {}
}, [steps, requestKey, startProcess])
如果您 return 至少在一个分支中,您需要始终 return 一个值以遵循规则。它不一定是一个函数,它只需要是独立语句 return
以外的东西。这也有效:
useEffect(() => {
if (steps.step2 && !requestKey) {
const timeoutId = setTimeout(() => startProcess(), 500)
return () => clearTimeout(timeoutId)
}
return undefined;
}, [steps, requestKey, startProcess])
另请注意,setTimeout(() => startProcess(), 500)
简化为 setTimeout(startProcess, 500)
。