React
Nov 3, 2020
»
REACT
리액트 기본
새 프로젝트 만들기
프로젝트를 만들고자 하는 위치에서 터미널을 연 뒤
$ npx create-react-app 프로젝트이름
을 하면 프로젝트이름
이란 디렉토리가 생김.
그리고 해당 디렉토리에 들어가서
$ npm start 혹은 $ yarn start
상단 명령어를 치면 해당 디렉토리 리액트 페이지 주소가 나오게 됨
리액트 불러오기
리액트 최상단에 사용
import React from "react";
리액트 내보내기
리액트 최하단에 사용
export default 컴포넌트이름;
컴포넌트
- 쉽게 재사용가능한 일종의 UI조각
-
컴포넌트의 이름 앞글자는 대문자
import React from "react"; function Component(prop) { return <div>{props.name}</div>; }
reactDOM
- 리액트를 웹사이트에 출력(render)하는걸 도와주는 모델
- 리액트를 웹사이트에 올리고싶다 => reactDOM
- 리액트를 모바일 앱에 올리고싶다 => reactNative
- ReactDom.render
- 브라우저에 있는 실제 DOM 내부에 리액트 컴포넌트를 렌더링하겠다는 것을 의미
JSX
- 리액트에서 생김새를 정의할 때 사용하는 문법
- BABEL을 이용해서 XML 형태의 코드가 javascript로 변환됨
-
HTML같이 생겼지만 실제로는 Javascript
return <div>안녕하세요!</div>;
- 태그는 꼭 닫혀있어야함
- 2개 이상의 태그는 하나 이상의 태그로 감싸줘야 오류가 나지 않음
-
Fragment
- JSX는 꼭 닫혀있는 태그로 감싸져 있어야하기 때문에 빈태그로 껍데기를 만들어줌
function App() { return ( <> {" "} // Fragment <Hello /> <div>하윙</div> </> ); }
-
자바스크립트 변수를 사용할 때는 {}로 사용
import React from "react"; import Test from "./Test"; function App() { const name = "react"; return ( <> <Test /> <div>{name}</div> </> ); } export default App;
- JSX에서는 class 지정자를 className이라고 적음
-
style을 지정해주고 싶다면 style을 위한 객체를 만들어서 적용
import React from 'react'; import Test from './Test'; function App() { const name = 'react'; const style = { backgroundColor = 'black', color: 'blue', fontSize: 20, padding: '15px' } retrun( <> <Test /> <div className="testName" style={style}>{name}</div> </> ) } export default App;
-
스타일링크는 아래와 같이 표기
import "./style.css";
props
상위 컴포넌트에서 하위 컴포넌트로 데이터를 전달하는 수단
// App.js
import React from 'react';
import Test from './Test';
function App() {
return (
<>
<Test name='kaen'> // kaen이란 props를 Test.js로 전달
</>
)
}
export default App;
// Test.js
import React from 'react';
function Test(props) {
console.log(props)
return (
<>
My name is {props.name}! // My name is kaen!
</>
)
}
export default Test
-
매번 props. 라고 작성하기 싫으면 비구조화 할당(구조분해)으로 인자를 전달해주면 됨
function Test({ name, age }) { return <> {age} </>; }
-
defaultProps로 기본값을 설정할 수 있음
import React from "react"; function Test(props) { return; <div>{props.name}의 Blog</div>; } Test.defaultProps = { name: "사용자", }; export default Test;
결과는 ‘사용자의 Blog’라고 나오게 됨
-
children props를 사용해서 해당 컴포넌트 하위에 위치한 컴포넌트들을 불러올 수 있음
// App.js import React from 'react'; import Test from './Test'; function App() { retrun <Test>하위!</Test> } export default react; // Test.js import React from 'react'; function Test(props) { return <div>오! {props.children}</div> // 오! 하위! } export default Test
조건부 렌더링
조건이 참이냐 거짓이냐에 따라 다른 결과를 보여주는 것을 말함
realTrue라는 props를 설정해보겠음
// App.js
import React from 'react';
import Test from './Test';
function App() {
retrun <Test realTrue={true} />
}
export default App;
삼항 연산자를 사용해서 true면 뒤에 !가 붙게하겠음
// Test.js
import React from "react";
function Test(realTrue) {
return (
<div>
{/* 조건부 랜더링 */}
{realTrue ? <b>!</b> : null}
</div>
);
}
export default Test;
realTrue 가 true이므로 조건부 랜더링!
으로 출력된다
and를 사용해서 좀더 짧게 수정할 수도 있다
// 조건부 랜더링
{ realTrue && <b>!<b> }
props 값을 생략하면 기본값인 true로 설정됨