“意外令牌,预期”,当我尝试进行条件渲染以与无状态功能组件反应时

ava*_*hzh 2 javascript conditional reactjs

这是我的代码:

'use strict'

import React from 'react'
import { connect } from 'react-redux'
import { Panel, Col, Row, Well, Button } from 'react-bootstrap'

const Cart = ({ cart }) => {

  const cartItemsList = cart.map(cartArr => (
    <Panel key={cartArr.id}>
      <Row>
        <Col xs={12} sm={4}>
          <h6>{cartArr.title}</h6>
        </Col>
      </Row>
    </Panel>
  ));

  return (
    { cart[0] &&
      (<Panel header="Cart" bsStyle="primary">
        {cartItemsList}
      </Panel>)
    }
    { !cart[0] &&
      (<div></div>)
    }
    // {
    //   cart[0] ? (<Panel header="cart" bsStyle="primary">{cartItemsList}</Panel>) : (<div></div>);
    // }
  )
}

const mapStateToProps = state => ({
  cart: state.cart.cart
})

export default connect(mapStateToProps)(Cart)
Run Code Online (Sandbox Code Playgroud)

如您所见,cartItemsList仅当cart不是空数组时,我才尝试渲染嵌套在引导面板组件中。但是,一旦我使用条件渲染,就会收到错误“Unexpected token, expected ,”。注释掉的代码行是我尝试过的替代方法,这给了我同样的错误。如果我摆脱了条件并仅使用 渲染面板cartItemsList,它就会毫无问题地渲染。只有当我添加条件时才会看到此错误。我想知道是什么导致了这个错误?

May*_*kla 6

{}需要把js表达式放在里面JSX,这里不需要。

像这样写,没有{}

return (
    cart && cart.length ?
        <Panel header="Cart" bsStyle="primary">
            {cartItemsList}
        </Panel>
    :
        <div>
        </div>
)
Run Code Online (Sandbox Code Playgroud)

编写相同代码的另一种方法是:

if(cart && cart.length)
    return(
        <Panel header="Cart" bsStyle="primary">
            {cartItemsList}
        </Panel>
    )
return(
    <div>
    </div>
)
Run Code Online (Sandbox Code Playgroud)