裏面JSX我們不能用if-else/switch/for
,但你可以叫一個功能和裏面,你可以使用所有這些。檢查DOC。
裏面Stateless Functional Component
也可以寫function
,像這樣:
const ProfileDetail = ({user}) => {
var createList = function(){
let a = [];
for (let key in user) {
if (user.hasOwnProperty(key)) {
a.push(<li key={key}>{key}: {user[key]}</li>)
}
}
return a;
}
return (
<Card className="container">
{createList()}
</Card>
)
};
但不是你可以使用地圖會更容易,就像這樣:
const ProfileDetail = ({user}) => (
<Card className="container">
{Object.keys(user).map((el,i) => <li key={i}>{el}: {user[el]}</li>)}
</Card>
);
建議:
1.當使用for
循環與object
,變量將代表object
的每個關鍵,因此檢查user.hasOwnProperty(key)
我認爲不是必需的。
2.For loop
將不會返回任何東西,你需要使用一些變量來推的ui-items
,然後loop
後返回該變量。使用map
它會很容易,並且它可以在較少的行中執行相同的任務,而且您也不需要額外的變量。
檢查這個例子:
let user = {a:1, b:2, c:3, d:4, e:5};
const ProfileDetail = ({user}) => {
var createList = function(){
let a = [];
for (let key in user) {
a.push(<li>{key}: {user[key]}</li>)
}
return a;
}
return (
<ul>
{createList()}
------By using map------
{
Object.keys(user).map(el => <li key={el}>{el}: {user[el]} </li>)
}
</ul>
)
}
ReactDOM.render(<ProfileDetail user={user}/>, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id='app'/>