JSX条件渲染语法错误[重复]

Posted

技术标签:

【中文标题】JSX条件渲染语法错误[重复]【英文标题】:JSX conditional rendering syntax error [duplicate] 【发布时间】:2018-08-02 13:15:57 【问题描述】:

我有以下组件:

export const Checkmark = props => (
  <Layout ...props>
     
      if(props.checked)
        <Icon name="checkmarkBlue" small />
       
    
  </Layout>
)

我的 linting 抱怨“如果”说(意外的令牌)

【问题讨论】:

这里有an entire page about this in the docs。 【参考方案1】:

括号内必须有表达式。您可以将其更改为三元:

   props.checked ? <Icon name="checkmarkBlue" small /> : "" 

如果您真的需要语句,也可以使用 IIFE

(function()
  if(props.checked)
    return <Icon name="checkmarkBlue" small />;
  //...
  return "";
)()

【讨论】:

【参考方案2】:

来自React#github

if-else 语句在 JSX 中不起作用。这是因为 JSX 只是函数调用和对象构造的语法糖

你应该改用short-circuit

<Layout ...props>
         
      props.checked && <Icon name="checkmarkBlue" small />     
    

或者

   render()

      let myhtml = "";

      if(props.checked)
        myHtml = <Icon name="checkmarkBlue" small /> 
      

      return (<Layout ...props>  myHtml</Layout>);
    

【讨论】:

您可能希望链接到文档的当前版本。 reactjs.org/docs/… @JordanRunning 谢谢伙计。

以上是关于JSX条件渲染语法错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

表达式预期和语法错误:Unexpected token jsx nextjs

React 多条件检查(JSX)

在 className if-else 语法中反应 JSX [重复]

babel无法识别jsx语法... SyntaxError:意外的令牌(25:1)[重复]

if 条件中的语法错误。不等号突出显示[重复]

使用 CRA 时解决 JSX 语法错误(创建反应应用程序)