본문 바로가기

React 수업 정리

React 1일차

react 설치
- node.js 다운로드
- 환경변수 설정이 안돼있다면 설정 => path
- vs-code => Terminal => node -v  /  npm - v  버전 확인

npx create-react-app 폴더명

npx create-react-app test-app

npm error code ENOENT
npm error syscall lstat
npm error path C:\Users\EZENIC-127\AppData\Roaming\npm
npm error errno -4058
npm error enoent ENOENT: no such file or directory, lstat 'C:\Users\EZENIC-127\AppData\Roaming\npm'
npm error enoent This is related to npm not being able to find a file.
npm error enoent

>> node 버전이 전체 설치가 안되어 있을 경우 뜨는 에러

-------------------------------------------------

npm i -g npm@latest => 전체 재설치 


cmd 명령어
dir : 전체 폴더 값 보기
cd : 폴더 이동

cd .. : 상위폴더 이동

 

cd test-app => 리액트 폴더에서 start 해야됨.

npm start => 리액트 서버 시작


종료하고싶을 때는

ctrl + c => y 

 

--------------------------------------------------

react : 싱글 페이지 컴포넌트 방식

 

{ /* 주석 */} ,  // return 밖 영역의 주석 

컴포넌트 : 대문자로 시작 원칙
재사용성 높음. 확장성도 뛰어남.
js => JSX 구문 사용

virtual DOM => 랜더링 속도 up, 최적화 속도 up

HOOK => 함수 컴포넌트에 기능을 추가할 수 있게 해주는 기능

App.js => index.js =>index.html root 삽입

 

반드시 태그가 닫혀 있어야 함.  => 안닫으면 오류발생
<input />  <br />

 

자바스크립트에서 ` ${변수명} ` 은 그냥 {변수명} 으로 씀.

  {/* `${변수명}` => {변수명} */}  

 

props => 매개변수 

 

props : properties의 약어
부모(상위) 컴포넌트에서 자식(하위) 컴포넌트로 파라미터를 전달

 

props 써보기

import React from 'react';
import Student from './Student';
import { student, students } from '../data/data';
import Student2 from './Student2';
const Home = () => {

    // home.jsx 에서 데이터를 => Student로 전달
    // props : properties의 약어
    // 부모(상위) 컴포넌트에서 자식(하위) 컴포넌트로 파라미터를 전달


    return (
        <div className='home'>
            {/* <div>Home.jcx Area</div> */}
            <Student />
            <hr />
            <Student2 std={student} />
            <hr />
            {/* students 배열중 객체 1개를(s) 뽑아 Student2 std ={s} */}

            {
                 students.map(s => (
                    <Student2 std={s} />
                ))
            }

        </div>
    );
};

export default Home;
import React from 'react';
import {student, students} from '../data/data';

const Student = () => {

    // const name = "홍길동";
    // const age = "20";
    // const address = "seoul";

    return (
        <div className='student'>
            <h3>{student.name}({student.age}) : {student.addr}</h3>
            {
                students.map(s => (
                    <h3>{s.name}({s.age}) : {s.addr}</h3>
                ))
            }

        </div>
    );
};

export default Student;
import React from 'react';

const Student2 = (props) => {
 
    
    const {name,age,addr} =props.std; 
    

    return (
        <div>
               <h3>{name}({age}) : {addr} </h3>
        </div>
    );
};

export default Student2;

 

const {name,age,addr} =props.std;   =  구조 분해 할당 방식

 

props를 지정하고 값이 들어오지 않을 경우 빈 값으로 처리
defaultProps 로 기본값 설정

 

Test4를 만들어서 해보기

 

import React from 'react';

// 구조 분해 할당 방식
const Test4 = ({name,color}) => {
    return (
        <div className='test4'> 
        <h1 style={{color: color}}>Hello~!! {name} </h1>
        </div>
    );
}

Test4.defaultProps = {
    name : '손님'
}

 

위에 Home 에 추가되는 부분

 

    <Test4  name="react" color ="red"/>
            <Test4  color ="red"/>
            <hr />

 

 

결과

 

 

name이 없는 두번째 구문에 '손님' 이라는 default 가 들어가는걸 볼 수 있음.

 

네비게이션 바처럼 a태그 링크를 설정해서 넘어가는걸 만들어 해당 컴포넌트로 이동하려면
npm i react-router-dom로 설치필요.

a태그 대신

<Link to='컴포넌트명'>이름</Link>  사용

 

App.js 와 Header로 어떤 구조로 만들어지는지 확인

 

App.js 

import React from "react";
import Footer from "./components/Footer";
import Header from "./components/Header";
import Home from "./components/Home";
import { BrowserRouter, Route, Routes } from "react-router-dom";
import Test from "./components/Test";
import Test2 from "./components/Test2";
import Test3 from "./components/Test3";
import Test4 from "./components/Test4";

function App() {
  return (
    <div className="App">
      <BrowserRouter>
      <Header />
        <Routes>
          <Route path="/" element= {<Home/>} />
          <Route path="/test" element= {<Test/>} />
          <Route path="/test2" element= {<Test2/>} />
          <Route path="/test3" element= {<Test3/>} />
          <Route path="/test4" element= {<Test4 name="홍길동" color ="gray" />} />
        </Routes>
      <Footer />
      </BrowserRouter>
    </div>
  );
}

export default App;

 

Header.jsx

import React from 'react';
import { Link } from 'react-router-dom';

const Header = () => {
    return (
        <div className='header'>
            <div>Header.jsx Area</div>
            <Link to='/'>Home</Link>
            <Link to='/test'>Test</Link>
            <Link to='/test2'>Test2</Link>
            <Link to='/test3'>Test3</Link>
            <Link to='/test4'>Test4</Link>
        </div>
    );
};

export default Header;

 

결과를 확인해보면 

누르면 해당 컴포넌트로 이동하는걸 볼 수 있음.

'React 수업 정리' 카테고리의 다른 글

Board 만들어보기  (0) 2024.09.19
React 5일차  (0) 2024.09.10
React 4일차.  (3) 2024.09.09
React 3일차  (0) 2024.09.06
React 2일차  (1) 2024.09.05