javascript - 重构此函数以降低其在 if else 条件下的认知复杂性
问题描述
由于认知复杂性,我在声纳中遇到错误,请查找我的代码和附加的屏幕截图以供更多参考。请帮我解决这个问题
useEffect(() => {
if (isFocused && isLoggedIn) {
getProfileData();
}
if (isFocused) {
dispatch(rewardsLandingScreenTracker());
}
}, [dispatch, getProfileData, isLoggedIn, isFocused]);
有人也可以更新我在三元运算符的情况下的解决方案是什么
const savedPrice =
(actualPrice ? getConvertedPrice(actualPrice) : 0) -
(proPrice ? getConvertedPrice(proPrice) : 0);
解决方案
您可以将其重写为:
useEffect(() => {
if (isFocused) {
if (isLoggedIn) getProfileData();
dispatch(rewardsLandingScreenTracker());
}
}, [dispatch, getProfileData, isLoggedIn, isFocused]);
或者
useEffect(() => {
if (!isFocused) return
if (isLoggedIn) getProfileData();
dispatch(rewardsLandingScreenTracker());
}, [dispatch, getProfileData, isLoggedIn, isFocused]);
第二个可能会在返回不一致时引发 lint 错误(取决于您的 linter 设置)。然后你必须return
在回调函数的末尾添加显式。