javascript - 定义一个常量,而不是将这个文字复制 3 次声纳
问题描述
我想知道如何重构以下内容。基本上,在我从谷歌获取用户信息后,它会被验证,因为可能允许特定域。如果它通过了那个,我们会根据后端 api 验证令牌。
Sonar 抱怨使用return displayAlert('LoginFailed')三次。鉴于这些方法具有独特的用途,我想知道可以做些什么来改进它?
import React, {useContext} from 'react';
import {View, Alert} from 'react-native';
import {LocalizationContext} from 'library/localization';
import ServiceAuth from 'services/ServiceAuth';
import {saveLoggedInDetails} from 'library/userInformation';
const MyComponent = (props) => {
const {translations} = useContext(LocalizationContext);
const displayAlert = (msg) =>{
//translations happen here
Alert.alert("Failed", msg)
return false;
}
const validateToken = async (userGoogleInfo) => {
const {idToken} = userGoogleInfo;
let serviceAuth = ServiceAuth.getInstance();
try {
return await serviceAuth.validateT(idToken);
} catch (error) {
//show alert here
return displayAlert('LoginFailed')
}
};
const authorize = async (userGoogleInfo) => {
const allowedDomains = [];
let reply = {ok: false};
//check if domain is allowed etc and set to true.
if (!reply['ok']) {
return displayAlert('InvalidDomain');
}
try {
const userInfo = await validateToken(userGoogleInfo);
if (userInfo) {
console.log("okay")
} else {
return displayAlert('LoginFailed')
}
} catch (error) {
return displayAlert('LoginFailed')
}
};
return (
<>
<View>
<Text>Hello</Text>
</View>
</>
);
};
export default MyComponent;
解决方案
该消息有点令人困惑,但声纳只抱怨LoginFailed
使用三次作为参数的字符串。
创建一个常量,例如:
const LOGIN_FAILED = 'LoginFailed';
然后在对 displayAlert 的所有三个调用中使用它:
return displayAlert(LOGIN_FAILED);
推荐阅读
- r - 将有向关联矩阵转换为边列表
- javascript - 如何设置多个元素的 z-index 并在模态中使用 javascript 动态更新它们?
- flutter - 如何在消费前使用提供者加载数据
- java - 重用自定义注解
- reactjs - 如何超载反应道具?
- java - 当我们开发应用程序时,模拟器或物理设备更好
- mysql - 如何在mysql存储过程中使用动态条件
- javascript - 数据字符串如何包裹在里面的对象上?工作到 html 显示
- c# - 如何使用 string.Format() 将占位符替换为 HTML 电子邮件模板中的动态文本
- python - End of line error appearing in the end of the conditional statement