div 대신 Fragment를 사용해도 괜찮다.
import {Fragment} from 'react';
function App() {
return (
<Fragment>
<h1></h1>
<h2></h2>
</Fragment>
);
}
export default App;
다른 코드 똑같은 표현으로는 아래와 같이 작성하면 된다.
import {Fragment} from 'react';
function App() {
return (
<>
<h1></h1>
<h2></h2>
</>
);
}
export default App;
const는 ES6 문법에서 새로 도입되었으며 한번 지정하고 나면 변경이 불가능한 상수를 선언할 때 사용하는 키워드이다. let은 동적인 값을 담을 수 있는 변수를 선언할 때 사용하는 키워드이다.
ES6 이전에는 값을 담는 데 var 키워드를 사용했는데, var 키워드는 scope(해당 값을 사용할 수 있
는 코드 영역)가 함수 단위이다.
function myFunction() {
var a = "hello";
if(true) {
var a = "bye";
console.log(a); // bye
}
console.log(a); // bye
}
myFunction();
function myFunction() {
let a = 1;
if(true) {
let a = 2;
console.log(a); // 2
}
console.log(a); // 1
}
myFunction();
let과 const는 scope가 함수 단위가 아닌 블록 단위이므로, if문 내부에서 선언한 a값은 if 문 밖의 a값을 변경하지 않는다.
let과 const 를 사용할 때 같은 블록 내부에서 중복 선언이 불가능하다.
let a = 1;
let a = 2; // 오류 발생
const b = 1;
b = 2; // 오류 발생
function App() {
const name = '리액트';
return(
<div>
{name === '리액트' ? (
<h1>리액트입니다.</h1>
) : (
<h2>리액트가 아닙니다.</h2>
)}
</div>
);
}
export default App;
위 코드 실행 시 '리액트입니다.'라는 문구를 볼 수 있다.
const name = '뤼왝트';
위와 같이 코드를 변경하면 '리액트가 아닙니다.'라는 문구가 나타날 것이다.
const name = '뤼왝트';
return <div>{name === '리액트' ? <h1>리액트입니다.</h1> : null}</div>;
const name = '뤼왝트';
return <div>{name === '리액트' && <h1>리액트입니다.</h1>}</div>;
- && 연산자로 조건부 렌더링을 할 수 있는 이유는 리액트에서 false 렌더링할 때는 null과 마찬가지로 아무것도 나타나지 않기 때문이다.
❗ 주의점- false값이 0일 때 예외적으로 화면에 나타난다.
const number = 0; return number && <div>내용</div>
위 코드 실행 시 화면에 0을 보여준다.
const name = undefined;
return name;
위와 같이 작성하면 오류가 발생한다.
아래 코드로 작성하여 오류를 방지할 수 있다.
const name = undefined;
return name || '값이 undefined입니다.';
const name = undefined;
return <div>{name}</div>;
name 값이 undefined일 때 보여 주고 싶은 문구가 있다면 아래와 같이 작성하면 된다.
const name = undefined;
return <div>{name || '리액트'}</div>;
<div class="(클래스명)"></div>
와 같이 class라는 속성을 설정하지만 JSX에서는
<div className="(클래스명)"></div>
와 같이 className으로 설정해 주어야 한다.