
-> 두 개의 태그 불가
function App() {
return (
<h1>리액트 앱</h1>
<h2>react app</h2> ⇐ JSX 식에는 부모 요소가 하나 있어야 합니다.
);
}
export default App;
<div> 태그를 추가하여 묶기 function App() {
return (
<div>
<h1>리액트 앱</h1>
<h2>react app</h2>
</div>
);
}
export default App;

⇒ but❗️불필요한 태그가 추가 됨
import { Fragment } from "react";
function App() {
return (
<Fragment>
<h1>리액트 앱</h1>
<h2>react app</h2>
</Fragment>
);
}
export default App;
⇒ ✅ 불필요한 태그가 추가 되지 않음
-> 🌟 가장 많이 사용
// import { Fragment } from "react";
function App() {
return (
<>
<h1>리액트 앱</h1>
<h2>react app</h2>
</>
);
}
export default App;
표현식이란?
값을 가지거나 값을 반환하는 문장으로 변수, 함수의 반환 값, 비교한 결과 값 등을 모두 포함함
function App() {
const name = "홍길동";
const age = 23;
return (
<>
<h1>{`안녕, ${name}`}</h1>
<h1>안녕, {name}</h1>
<h2>{age + 2}</h2>
</>
);
}
export default App;
{'안녕, ${name}'} : 템플릿 문자열 안에서 변수를 나타내기 위함 => 문자열 데이터 출력안녕, {name} : 문자열 + 변수 데이터 출력function App() {
const name = "홍길동";
const age = 23;
return (
<>
<h1>{`안녕, ${name}`}</h1>
<h1>안녕, {name}</h1>
<h2>${age + 2}</h2>
<h2>{name === "홍길동" ? "환영합니다." : "환영하지 않습니다."}</h2>
</>
);
}
export default App;
function App() {
const name = "홍길동x";
const age = 23;
return (
<>
<h1>{`안녕, ${name}`}</h1>
<h1>안녕, {name}</h1>
<h2>${age + 2}</h2>
<h2>{name === "홍길동" ? "환영합니다." : null}</h2>
</>
);
}
export default App;
function App() {
const name = "홍길동";
const age = 23;
return (
<>
<h1>{`안녕, ${name}`}</h1>
<h1>안녕, {name}</h1>
<h2>${age + 2}</h2>
<h2>{name === "홍길동" && "환영합니다."}</h2>
</> ~~~~~~~~~~~~~
); 조건을 만족했을 때 출력할 내용
}
export default App;
function App() {
const name = "홍길동";
const age = 23;
return ( +-- 표현식
<> | +-- 객체
<h1 style={ { backgroundColor: "black", color: "yellow", fontSize: 28, padding: '16px' } }>{`안녕, ${name}`}</h1>
<h1>안녕, {name}</h1>
<h2>${age + 2}</h2>
<h2>{name === "홍길동" && "환영합니다."}</h2>
</>
);
}
export default App;
-> 중괄호 두개 써줘야한다 : 표현식+객체
-> myStyle 변수로 선언하여 사용
function App() {
const name = "홍길동";
const age = 23;
const myStyle = { backgroundColor: "black", color: "yellow", fontSize: 28, padding: '16px' };
return (
<>
<h1 style={myStyle}>{`안녕, ${name}`}</h1>
<h1>안녕, {name}</h1>
<h2>${age + 2}</h2>
<h2>{name === "홍길동" && "환영합니다."}</h2>
</>
);
}
export default App;
-> 스타일 마다 변수 지정
function App() {
const name = "홍길동";
const age = 23;
const myStyle = {
h1Style: { backgroundColor: "black", color: "yellow", fontSize: 28, padding: '16px' },
h2Style: { color: "red" }
};
return (
<>
<h1 style={myStyle.h1Style}>{`안녕, ${name}`}</h1>
<h1>안녕, {name}</h1>
<h2>${age + 2}</h2>
<h2 style={myStyle.h2Style}>{name === "홍길동" && "환영합니다."}</h2>
</>
);
}
export default App;
: 함수가 undefined를 반환하면 로직 파악이 어려우므로 기본값을 반환하도록 설정한다
function Name() {
let name;
return name || "아무개";
}
function App() {
return (
<>
안녕, <Name />!
</>
);
}
export default App;
: class 라는 단어는 자바스크립트에서 이미 예약어로 등록되어 있기 때문이다.
<div class="myclass"> ... </div> ⇒ <div className="myclass"> ... </div>
App.css 파일에 아래의 스타일을 추가
.react {
background-color: black;
color: yellow;
font-size: 40px;
padding: 10px;
}
App.js 파일에 App.css 스타일을 임포트한 후 클래스 속성을 추가
import "./App.css";
function App() {
return (
<div className="react">홍길동</div>
);
}
export default App;
JSX는 XML과 자바스크립트가 합쳐진 것으로 XML은 HTML보다 문법이 엄격하게 규격화 되어있기 때문
-> 내용이 없는 태그의 경우에는 self-closing 태그를 사용
- 내용이 없는 태그 :
<input> <img> <hr> <br> ...- self-closing 태그 :
<input /> <img /> <hr /> <br /> ...
import "./App.css";
function App() {
return (
<>
<input type="text" />
<input type="text"></input>
</>
);
}
export default App;
영역에 따라 쓸 수 있는 주석이 달라진다.
import "./App.css";
// 자바스크립트 주석
/*
자바스크립트 주석
*/
function App() {
// 자바스크립트 주석
/*
자바스크립트 주석
*/
return (
// 태그가 시작되기 전에는 자바스크립트 주석 사용이 가능
/*
자바스크립트 주석
*/
<>
// 태그가 시작되면 주석이 아닌 일반 문자열로 인식
/*
일반 문자열로 해석되어 화면에서 출력
*/
{ /* 자바스크립트 표현식으로 주석을 처리 */}
{ // 인라인 주석을 사용할 때는 유의해야 함 (표현식 끝에 }을 사용하면 주석 처리되어 버림)
}
<input type="text" />
<input type="text"></input>
</>
);
}
// 자바스크립트 주석
/*
자바스크립트 주석
*/
export default App;