将 JSX 代码存储到 Javascript 变量的正确方法(如果可能)

IT技术 javascript reactjs jsx babeljs
2021-05-15 04:41:20

我已经使用ReactJs´s JSX语法编写了以下代码

import { Link } from 'react-router';

class SidebarMenuItem extends React.Component {

render() {

    var href = (this.props.submenu ? 'javascript:' : {<Link to="mod/admin" + this.props.link />};

    return ( 

        <a href={href} onClick={this.selected}>
            <i className={'fa ' + this.props.icon} />
            <span>{this.props.title}</span>
        </a>

    )
  }
}

但它看到我无法将直接 JSX 代码存储到变量中,因为我收到以下错误:

Module build failed: SyntaxError: D:/9. DEV/client/components/App/SidebarMenuItem.js: Unexpected token, expected , (41:52)

  40 | 
> 41 |      var href = (this.props.submenu ? 'javascript:' : {<Link to="mod/admin" + this.props.link />};
     |                                                        ^

将我的 Link 组件存储在href变量中的正确方法是什么

2个回答

您只需编写普通的 jsx,在您的情况下,您需要删除 jsx 周围的括号,然后在“mod/admin”+ this.props.link 部分周围包含括号,就像您在 render 方法中编写时一样.

var href = this.props.submenu ? 'javascript:' : <Link to={"mod/admin" + this.props.link} />

在跨多行的 JSX 周围使用 ()

var href = this.props.submenu ? 'javascript:' : (<Link to="mod/admin" + this.props.link />);