Правильный способ (если возможно) хранения кода JSX в переменной Javascript

Я написал следующий код, используя 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 />};
     |                                                        ^

Как правильно хранить компонент моей ссылки в href переменной ?

2 ответов


вы просто напишете простой jsx, в вашем случае вам нужно удалить скобки вокруг jsx, а затем включить скобки вокруг "mod/admin" + this.реквизит.ссылка часть так же, как вы бы, когда вы пишете в методе рендеринга.

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 />);