내부 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)
이 필요하지는 않습니다.
2For 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'/>