리액트는 페이스북이 만든 SPA(Single Page Application)에서 사용자 인터페이스를 만들기 위한 라이브러리이다.
브라우저 렌더링 과정
Virtual Dom 이란?
가상 돔을 사용하는 이유
아래에서 자세히 알아보겠습니다.
function App(){
return React.createElement('h1', null, `Hello, React`);
}
function App(){
return (
<h1>Hello, React</h1>
);
}
Virtual Dom에서 컴포넌트 변화를 감지할 때 효율적으로 비교해야 하기 때문에 하나의 component는 하나의 DOM트리 구조로 이루어져야 한다.
div
사용)function App(){
return (
<h1>Hello, React</h1>
<h1>Bye, React</h1>
);
}
function App(){
return (
<div>
<h1>Hello, React</h1>
<h1>Bye, React</h1>
</div>
);
}
React.Fragment
사용)function App(){
return (
<React.Fragment>
<h1>Hello, React</h1>
<h1>Bye, React</h1>
</React.Fragment>
);
}
React.Fragment
는 <> </> (빈 태그)와 동일한 기능을 수행한다.
여러 자식을 그룹화 할 때 div나 React.Fragment중 어느것을 사용해도 상관없지만 Fragment를 사용하는 편이 더 좋다. 자세한 이유는 아래 문서 참고
HTML에서 input 태그처럼 닫지 않아도 되는 경우가 있지만, JSX에서는 반드시 클로징 태그를 써줘야한다.
function App(){
return (
<>
<h1>Hello, React</h1>
<input type="text">
</>
);
}
function App(){
return (
<>
<h1>Hello, React</h1>
<input type="text"/>
</>
);
}
<div></div> == <div/>
function App(){
const name = 'Sumin';
return (
<>
<h1>Hello, React</h1>
<p>내 이름은 {name}</p>
</>
);
}
function App(){
return (
<>
<h1 style={{fontSize: '20px'}}>Hello, React</h1>
</>
);
}
<!— 주석 —>
{/*주석*/}
npm install styled-components
import styled from 'styled-components';
const ButtonWrap = styled.div`
width: 200px;
padding: 20px;
background: ${props => props.toggle ? "pink" : "purple"};
`;
const Button = styled.button`
color: ${props => props.color || "red"}
`;
export const StyledComponentTest = () =>{
return(
<>
<ButtonWrap toggle={false}>
<Button color="blue">버튼입니다</Button>
</ButtonWrap><ButtonWrap toggle={true}>
<Button>버튼입니다</Button>
</ButtonWrap>
</>
);
}