2

在 React 组件中处理嵌套条件逻辑的正确语法是什么?

React.createClass
render: ->
  <div>
    {if @props.showList
      {for item in @props.myItems
        {item}
      }
    else
    }
  </div>

for 循环(单独)可以被渲染;可以呈现 if/else 条件(单独)。但是,将 for 循环嵌套在条件中会失败。

任何帮助将不胜感激。

4

2 回答 2

4

我还没有测试过它,但是根据 JSX 的正常工作方式,你只需{expression}要从 JSX 模式中逃脱。

程序以 JS 模式(或此处为 CS)启动,当遇到元素标记时,它会进入 JSX 模式。在 JSX 模式下使用{foo}会导致它返回到 JS 模式。从那里开始应用上述规则,您可以通过启动标记重新进入 JSX 模式,依此类推。

render: ->
  <div>
    {
    if @props.showList
      for item in @props.myItems
        item

    else
       <div>{foo}</div>
    }
  </div>

带注释:

咖啡脚本:

render: ->

CoffeeScript 中的 JSX

  <div>

CoffeeScript 中 JSX 中的 CoffeeScript

    {
    if @props.showList
      for item in @props.myItems
        item

    else

CoffeeScript 中的 JSX CoffeeScript 中的 JSX

       <div>

CoffeeScript 中 JSX 中的 CoffeeScript

          {foo}

CoffeeScript 中的 JSX

       </div>

CoffeeScript 中的 JSX

    }
  </div>

咖啡脚本

...
于 2014-11-11T23:56:26.983 回答
0

在这些{}部分中,您可以只使用普通的 Coffeescript/CJSX 代码,只要它计算为单个表达式:

React.createClass
  render: ->
    <div>
      {
        if @props.showList
          for item in @props.myItems
            <span key={item.id}>{item}</span>
        else
          <span>some other content</span>
      }
    </div>
于 2015-06-29T22:12:51.563 回答