home
자바
home
🍇

<주말 재직자> [UIUX] 풀스택(프론트엔드&백엔드]리액트(React JS) 자바스크립트

기간
2022/12/24 → 2023/03/04
기관
그린컴퓨터아카데미 (강남)
상태
수료
과제1_221231.zip
605.8KB
과제2_230107 (서버).zip
1817.6KB
과제2_230107 (서버).z01
3072.0KB

노드 JS 설치

터미널(명령)

프로젝트 생성하기

React 프로젝트 구조

build : npm run build 커맨드를 통해 생성된 react 배포 폴더
node_modules : npm install을 통해 설치된 모듈들이 위치하는 폴더
public : static 자원이 위치하는 폴더
src : components / containers / pages / store 등이 위치하는 폴더
package : version, dependencies, proxy 등의 정보가 들어있는 파일

React 컴포넌트 State, Props

함수형 컴포넌트 (컴포넌트 첫 문자는 대문 = App)

import React from 'react'; function App() { //스크립트 문법 작성 return ( <div> JSX문법 </div> ); } export default App;
JavaScript
복사

JSX

const name = 'jjw'; const element = <h1>Hello, {name}</h1>;
JavaScript
복사
자바스크립트를 확장한 문법
UI가 어떻게 생겨야 하는지 설명하기 위해 리액트와 함께 사용할 것을 권장
JSX라고 하면 템플릿 언어가 떠오를 수도 있지만, 자바스크립트의 모든 기능이 포함되어 있다.

Props : 컴포넌트에 값 전달할 때 사용

useState

내용이 사용자 인터렉션에 따라 바뀌어야할 때
import { useState } from 'react'; //선언 const [state, useState] = useState(0); //사용 => state //값 수정 => setState(100) // -> 값 수정 시 컴포넌트 재 렌더링 발생
JavaScript
복사

React router dom

리액트는 SPA(Single Page Application) 방식
기존 웹 페이지처럼(MPA 방식) 여러 개의 페이지를 사용, 새로운 페이지를 로드하는 방식이 아니다.
새로운 페이지를 로드하지 않고 하나의 페이지 안에서 필요한 데이터만 가져오는 형태를 가진다.
React-Router는 신규 페이지를 불러오지 않는 상황에서 각각의 url에 따라 선택된 데이터를 하나의 페이지에서 렌더링해주는 라이브러리라고 볼 수 있다.

Router Component

1.
<BrowserRouter> 태그로 컴포넌트 사용하기
BrowserRouter를 사용할 것이기 때문에, <BrowserRouter> 태그로 컴포넌트를 감싸준다.
Header는 모든 URL에 공통 적용할 Component로 최상단에 위치할 예정이다.
2.
<Routes>, <Route> 컴포넌트 사용하기
<Routes> 컴포넌트는 여러 Route를 감싸서 그 중 규칙이 일치하는 라우트 단 하나만을 렌더링 시켜주는 역할을 한다.
<Route>는 path 속성에 경로, element 속성에는 컴포넌트를 넣어 준다. 여러 라우팅을 매칭하고 싶은 경우 URL 뒤에 *을 사용하면 된다.
3.
<Link> 컴포넌트는 URL 값을 변경한다.
import {Link, Routes, Route, BrowserRouter } from 'react-router-dom'; <BrowserRouter> <header> <Link to='/'>HOME</Link> <Link to='/list'>list</Link> </header> <main> <Routes> <Route path='/' element={<Main/>}></Route> <Route path='/list' element={<List/>}></Route> </Routes> </main> <BrowserRouter>
JavaScript
복사

컴포넌트 이동 시 파라미터값 사용 예시

Link / State
import { Link } from 'react-router-dom'; <Link to="/ex" {state: 전달하고 싶은 값}> NAME </Link>
JavaScript
복사
컴포넌트 (값 전달)
import { useLocation } from 'react-router-dom'; const {state} = useLocation();
JavaScript
복사
전달 값 (사용)
useNavigate(컴포넌트 이동) / useLocation(파라미터 취득)
1.
페이지 이동 시, 파라미터 전달 방법
a.
useNavigate() 훅으로 navigate 함수를 취득한다.
b.
navigate() 함수의 첫 번째 인자에 이동할 경로, 두 번째 인자의 state 속성에 파라미터를 넣어준다. ex) naviagate(’/media’, {state: {key: value}});
2.
이동한 페이지에서, 파라미터 취득 방법
a.
useLocation() 훅으로 location을 취득한다.
b.
location.state로 전달 받은 파라미터를 취득할 수 있다. ex) const { state } = useLocation();
import { useNavigate } from 'react-router-dom'; const navigate = useNavigate(); const move = () => { navigate('/media', {state: 전달하고 싶은 값});
JavaScript
복사
컴포넌트 (값 전달)
import { useLocation } from 'react-router-dom'; const { state } = useLocation();
JavaScript
복사
전달 값 (사용)

Context API

Context는 리액트 컴포넌트간에 어떠한 값을 공유할 수 있게 해주는 기능
전역적(global)으로 필요한 값을 다룰 때 사용. (꼭 전역적일 필요는 없다)
단순히 리액트 컴포넌트에서 Props가 아닌 또 다른 방식으로 컴포넌트간에 값을 전달하는 방법이다.
// Context 생성 import { createContext } from 'react'; const MyContext = createContext(null); // 컴포넌트 값 생 function App() { return ( <MyContext.Provider value="Hello World"> <Message /> </MyContext.Provider> ); }
JavaScript
복사
// Context / Hook 추가 import { MyContext } from './Context'; import { useContext } from 'react'; function Message() { const value = useContext(MyContext); return <div>Received: {value}</div>; }
JavaScript
복사
자식 컴포넌트