下面的代码eslint引发了一些错误
{authModal.mode === 'login' ? <Login /> : authModal.mode === 'register' ? <SignUp /> : <ForgotPassword />}
错误:不要嵌套三元表达式.Eslint(非嵌套三进制)
我想出了三种不会出错的方法:
- 判断每个 case
{authModal.mode === 'login' && <Login />}
{authModal.mode === 'register' && <SignUp />}
{authModal.mode === 'forgotPassword' && <ForgotPassword />}
- IF/ELSE内部函数
{(() => {
if (authModal.mode === 'login') {
return <Login />;
}
if (authModal.mode === 'register') {
return <SignUp />;
}
return <ForgotPassword />;
})()}
- 功能内部的switch 盒
{(() => {
switch (authModal.mode) {
case 'login':
return <Login />;
case 'register':
return <SignUp />;
case 'forgotPassword':
return <ForgotPassword />;
default:
throw new Error('Invalid auth mode');
}
})()}
我是JS的新手,我想知道人们会如何处理这件事.如果我的一些解决方案需要避免,请让我知道.其他解决方案也很受欢迎!
编辑:
我已经接受了在3个组件在性能方面都很重的情况下工作得最好的答案.即最佳性能.