インサイドJSXは我々がif-else/switch/for
を使用することはできませんが、呼び出すことができますあなたが使用できる機能と内部これらのすべて。 DOCを確認してください。
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>
)
};
をしかし、その代わりに、あなたはこのように、それがより簡単になりますマップを使用することができます:Stateless Functional Component
インサイド
また、あなたは、このように、function
を書くことができ
const ProfileDetail = ({user}) => (
<Card className="container">
{Object.keys(user).map((el,i) => <li key={i}>{el}: {user[el]}</li>)}
</Card>
);
提案:
for
ループはobject
となります。変数はobject
の各キーを表すので、user.hasOwnProperty(key)
とは必ずしも一致しません。
2.For loop
あなたはloop
後にその変数を返し、その後、その中でui-items
をプッシュするいくつかの変数を使用する必要があり、何も返さないであろう。 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'/>