为了账号安全,请及时绑定邮箱和手机立即绑定

如何避免 JSX 中的嵌套三元 ESLint 错误

如何避免 JSX 中的嵌套三元 ESLint 错误

小怪兽爱吃肉 2022-10-27 15:35:24
我必须做类似的事情:email ? do_this : icon ? do_that : do_something_else这可以使用嵌套三元非常简单地完成,但是这个 ESLint 规则并不能做到这一点。在他们的文档中,他们建议使用 if-else 但我不知道如何在我的情况下实现它该代码适用于一个三元组。return (  <td>    {email ? (       <span>...</span>     ) : (       <span>...</span>     )}  </td>添加嵌套三元将返回该 ESLint 错误并使用 if-else 表示这if是一个意外标记:return (  <td>    {if(email) return ( <span>...</span>);     else if(icon) return ( <span>...</span>);     else return ( <span>...</span>);     }  </td>有可能解决这个问题吗?
查看完整描述

3 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

您可以将单元格内容存储在变量中:


let content;

if(email) {

  content = <span>...</span>;

} else if(icon) {

  content = <span>...</span>;

} else {

  content = <span>...</span>;

}


return <td>{content}</td>;


查看完整回答
反对 回复 2022-10-27
?
函数式编程

TA贡献1807条经验 获得超9个赞

另一种选择是使用枚举之类的东西来呈现:


if (email) {

 content = 'email';

else if (icon) {

 content = 'icon';

} else {

 content = 'other';

}


return (

 <td>

   {{

   email: <span>...</span>,

   icon:  <span>...</span>,

   other: <span>...</span>,

   }[content]}

 </td>);

这在这里更详细地解释:https ://reactpatterns.js.org/docs/conditional-rendering-with-enum/


查看完整回答
反对 回复 2022-10-27
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

我发现提取复杂功能以提高可读性很有用:


import React from 'react';


// extracted functionality

const emailAction = (email, icon) => {

  if (email) {

    return <span>Do This</span>;

  } else {

    if (icon) {

      return <span>Do That</span>;

    } else {

      return <span>Do Something Else</span>;

    }

  }

};


// your Component

export const TableData = (props) => {

  return <td>{emailAction(props.email, props.icon)}</td>;

};


查看完整回答
反对 回复 2022-10-27
  • 3 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信