Ich habe eine Präsentationskomponente namens Navbar.jsx, die eine weitere Präsentationskomponente basierend darauf zurückgibt, ob der Benutzer authentifiziert ist oder nicht. Wenn ich Webpack starte, bekomme ich eine Fehlermeldung, dass das "if" in meiner if-Anweisung ein unerwartetes Token ist. Sie sehen die if else-Anweisung im Navbar-Collapse-div. Hier ist Navbar.jsx:Die if-Anweisung in der return-Anweisung meiner Präsentationskomponente wirft einen unerwarteten Token-Fehler
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;
Wissen Sie, warum eine sofort aufgerufene Funktion in JSX funktioniert, aber wenn sonst Anweisung nicht? – Mjuice
@Mjuice JSX Tags sind Zucker für Funktionsaufrufe (oder Objektliterale) - es funktioniert nicht aus dem gleichen Grund eine 'if' /' else' Anweisung in einem anderen Funktionsaufruf würde nicht funktionieren - es ist kein Ausdruck, der zurückgibt ein Wert, während ein IIFE ist. –
Also wenn ich hier ein IIFE in meine geschweiften Klammern steckte, und dann eine If else-Anweisung innerhalb des IIFE mit einem "Return" -Aufruf auf irgendeinen Wert verwendete, sollte das nicht funktionieren? – Mjuice