在第二个比较中reactjs OR条件中断

Cra*_*oiD 0 javascript reactjs or-condition

我正在尝试根据某个值向组件添加不同的ID。

我的方法如下

id={activePage === ('dashboard' || 'evc_detail')? 'bg_gradient':'bg_normal'}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果添加activePage等于dashboard正确的ID,但如果activePage等于则不注册evc_detail。我使用此条件的方式是否错误,我该如何解决?

Ori*_*ori 5

如果要进行多个比较,则需要手动声明它们:

(activePage === 'dashboard' || activePage === 'evc_detail') ? 'bg_gradient' : 'bg_normal'
Run Code Online (Sandbox Code Playgroud)

另一个选项是创建一个项目数组(或Set),然后使用Array.includes()(或Set.has)检查项目是否在组中:

const gradientPages = ['dashboard', 'activePage']

gradientPages.includes(activePage) ? 'bg_gradient' : 'bg_normal'
Run Code Online (Sandbox Code Playgroud)

activePage === ('dashboard' || 'evc_detail')? 'bg_gradient':'bg_normal'如果activePage原始码的运算式不是'dashbarod' ,则原始运算式将无法运作:

  1. 'dashboard' || 'evc_detail'会被评估,因为'dashboard'是真实的表达式,因此结果始终为dashboard
  2. 将“仪表板”与进行比较activePage。如果activePage为“仪表板”,则结果为true,如果不是,则为false