JSX란
// ---------------------------------------------------------
React.createElement(
type,
[props],
[…children]
)
// ---------------------------------------------------------
// JSX 사용 X
React.createElement('div', null, `Hello, ${name}`);
// JSX 사용 O
<div>Hello, {name}</div>
// ---------------------------------------------------------
function App() {
return (
<div>
Hello <b>react<>
</div>
);
}
// 위 문법은 아래와 같이 변환된다.
function App() {
return React.createElement("div", null, "Hello", React.createElement("b", null, "react"));
}
// 오류 코드
function App() {
return (
<div>Hello</div>
<div>World!</div>
);
}
// 정상 코드
function App() {
return (
<div>
<div>Hello</div>
<div>World</div>
</div>
);
}
// JSX안에서 자바스크립트 표현식을 사용하고 싶다면 코드를 {}로 감싸주면 된다.
function App() {
const name = "WW";
return (
<div>
<div>Hello</div>
<div>{name}!</div>
</div>
);
}
// 태그의 속성(attribute)에 값을 넣는 방법
const element1 = <div tabIndex="0"></div>
const element2 = <img src={user.avatarUrl}></img>
조건에 따라 다른 컴포넌트를 랜더링 하고 싶을 때에는 JSX 외부에서 사용하거나, { }안에서 삼항 연산자를 사용한다.
// 1. 외부에서 사용
function App() {
let component = ''
const name = "MM";
if (name === 'MM'){
component = <div>MM 입니다.</div>
} else{
component = <div>누구세요?</div>
}
return (
<div>
{component}
</div>
);
}
// 2. 내부에서 사용
function App() {
const name = "MM";
return (
<div>
{name === 'MM' ? <div>MM 입니다.</div> : <div>누구세요?</div>}
</div>
);
}
// 3. AND 연산자 (&&) 사용
function App() {
const name = "MM";
return (
<div>
//조건이 만족하지 않으면 아무것도 보이지 않는다.
{name === 'MM' && <div>MM 입니다.</div>}
</div>
);
}
function App() {
const style = {
backgroundColor: "red",
fontSize: "12px",
};
return <div style={style}>MM 입니다.</div>;
}
// or {{ }}중괄호 두개 (객체형)
<h4 style={{color:'bure', fontSize:'21px'}}>hihi</h4>
<div className="backgound_class">