У меня есть презентационный компонент, называемый Navbar.jsx, который возвращает другой презентационный компонент на основе того, аутентифицирован ли пользователь или нет. Когда я запускаю webpack, я получаю сообщение о том, что «if» в моей инструкции if является неожиданным токеном. Вы увидите инструкцию if else в div-bar. Вот Navbar.jsx:Оператор if в операторе return моего текущего компонента бросает непредвиденную ошибку маркера
import React, {PropTypes} from 'react';
import PreAuthNavTabs from './PreAuthNavTabs';
import PostAuthNavTabs from './PostAuthNavTabs';
const Navbar = ({ activeUser, loginUser }) => {
return (
<div>
<div className="navbar navbar-default navbar-fixed-top" role="navigation">
<div className="container">
<div className="navbar-header">
<button type="button" className="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span className="sr-only">Toggle Navigaton</span>
<span className="icon-bar"></span>
<span className="icon-bar"></span>
<span className="icon-bar"></span>
</button>
<Link to="/inventory"><img className="navbar-brand" src='../../css/hello_bacsi.png'></img></Link>
</div>
<div className="navbar-collapse collapse">
{
if (activeUser) {
return <PostAuthNavTabs activeUser={activeUser} />;
} else {
return <PreAuthNavTabs loginUser={loginUser} />;
}
}
</div>
</div>
</div>
</div>
);
};
Navbar.propTypes = {
activeUser: PropTypes.object,
loginUser: PropTypes.func
};
export default Navbar;
Знаете ли вы, почему функция, вызываемая немедленно, будет работать в JSX, но если инструкция else отсутствует? – Mjuice
@Mjuice JSX теги - это сахара для вызовов функций (или литералов объектов) - это не работает по той же причине, что и оператор 'if' /' else' в любом другом вызове функции не работает - это не выражение, которое возвращает значение, тогда как IIFE. –
Итак, если я запустил IIFE в свои фигурные скобки здесь, а затем использовал оператор If else внутри IIFE с вызовом «return» на какое-то значение, не должно ли это работать? – Mjuice