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

我有以下组件:

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

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

【问题讨论】:

标签: javascript reactjs ecmascript-6 jsx


【解决方案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 谢谢伙计。
    猜你喜欢
    • 2020-10-12
    • 2017-05-22
    • 2021-08-24
    • 2018-10-16
    • 2018-06-30
    • 2021-10-11
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多