我有一個名爲Navbar.jsx的表示組件,該組件根據用戶是否經過身份驗證返回另一個表示組件。當我運行webpack時,出現錯誤,說我的if語句中的「if」是一個意外的標記。你會在navbar-collapse div中看到if else語句。這裏是Navbar.jsx:我的演示組件的return語句中的if語句拋出一個意外的令牌錯誤
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到我的大括號中,然後在一個值爲「return」的情況下在IIFE中使用If else語句,應該不是這樣嗎? – Mjuice