Props? 

먼저 "Props"는 properties를 줄여 만든 말입니다. 상위 컴포넌트에서 하위 컴포넌트로 데이터를 전달할 때 사용되며 props는 읽기 전용이라는 특성을 가집니다. 쉽게 설명하면 props는 하위 컴포넌트에서 수정할 수 없고  데이터나 기능을 수정할 수 없다는 얘기인데 즉 데이터나 기능성 그 자체를 제공하는 데 사용되는 것입니다. 그 예로는 쇼핑몰 사이트 상품의 가격이라던가 상품의 대한 정보에 관한 글처럼 바뀌어선 안 되는 것들이 있습니다. 

 

Props 활용

//<Child text={textValue}/>

<Child text={"I'm TextValue!!"} /> // 위아래 방법 둘다 가능 .

 

function Child(props){
  return(
    <div className="child">
      <p>{props.text}</p>
       </div>
    );
};

 

props.children을 이용해서 value에 접근하는 방식.

function Parent() {
  return(
    <div className="parent">
      <h1>I'm the parent</h1>
      <Child>I'm good child</Child>
    </div>
  );
};


function Child(props) {
  return (
    <div className="child">
      <p>{props.children}</p>
    </div>
  );
};

State?

State는 Props와 반대로 컴포넌트 내의 변경될 수 있는 데이터를 관리할 때 사용합니다. State는 컴포넌트 내에서 관리하고 setState() 메서드를 통해 업데이트됩니다. 컴포넌트의 상태가 변경될 때마다 React는 컴포넌트를 변경된 상태에 종속된 하위 컴포넌트를 다시 렌더링 하며 실시간으로 갱신시키는 것입니다. 이러한 특성을 가지는 State는 주로 실시간으로 변경되는 사용자의 입력이라던가, Application의 상태, 그 이외의 동적인 데이터를 저장하고 관리하는 데 사용됩니다. 그 예로는 Youtube의 조회수라던가, 문자 메시지 리스트 등 실시간으로 갱신되는 것들이 있습니다.

 

 

먼저 useState를 import 해줍니다.

import { useState } from "react";

 

state 갱신 함수를 이용하여 state 저장 변수를 갱신시키며 useState() 안의 값을 넣어 state 저장 변수의 초기 값을 설정할 수 있습니다.

 

 

체크박스를 통해 state 갱신하기 

function CheckCheck(){

  const [isChecked, setIsCheced] = useState(false);

  const handleChecked = (event) => {
    setIsChecked(event.target.checked);
  }

return(
  <div className ="App">
    <input type="checkbox" checked={isChecked} onChange={handleChecked}/>
    <span>{isChecked ? "체크 되었습니다." : "체크 되지 않았습니다."}</span>
  </div>
);
}

 

 

결론: Props는 상위 컴포넌트에서 하위 컴포넌트로 데이터를 전달하는 데 사용되고 State는 컴포넌트 내에서 변하는 데이터를 관리할 때 사용 됩니다.

'React' 카테고리의 다른 글

SPA / ReactRouter  (0) 2023.03.13
JSX 활용하기  (0) 2023.03.13
React / JSX  (0) 2023.03.13

SPA란?

 서버로부터 완전히 새로운 페이지를 불러오지 않고 페이지 갱신에 필요한 데이터만 받아서 그 정보를 기준으로 페이지를 업데이트 함으로써 사용자와 소통하는 웹 어플레키에션이나 웹 사이트를 말합니다.

 

 SPA에서 초기엔 HTML, CSS, JavaScript가 로드될 때 서버에서 로드되지만 이후에 응용 프로그램과의 상호작용은 자바스크립트에 의해서 처리되는데 자바스크립트는 필요한 데이터를 서버에서 가져와 페이지의 콘텐츠를 동적으로 업데이트 합니다.

 

 이에 따라 SPA는 전체 페이지를 다시 갱신 할 필요가 없어 기존 웹 페이지에 비해 훨씬 원활하고 응답성이 뛰어난 환경을 구축할 수 있습니다.

SPA는 Youtube,Facebook,Gmail 등과 같이 페이지 전체가 아니라 부분적으로 업데이트 하는 사이트를 제작할 때 많이 사용되고 주로 React, Angular 등 자바스크립트 프레임워크를 주로 사용하여 구축됩니다.


ReactRouter란?

React Router는 React에서 라우팅을 위해 사용되는 타사 라이브러리입니다. React 프로그램의 탐색, URL 구조를 정의하는 방법을 제공해 사용자가 전체 페이지를 다시 갱신하지 않고 프로그램 내에서 다른 화면을 띄우거나 다른 페이지로 이동할 수 있도록 해줍니다.

 

SPA도 하나의 페이지를 가지고 있지만 사실 한 종류의 화면만 사용하진 않습니다.

SPA도 다양한 페이지와 화면을 필요로 하기에  다른 주소에 따른 뷰를 보여주는 라우팅 과정이 필요하고 여기서 ReactRouter 라이브러리가 많이 사용되는 것입니다.

 

React Router는 라우터 역할을 하는 BrowserRouter, 경로를 매칭해주는 Routes 와 Route 그리고 변경하는 역할을 하는 Link 이렇게 3가지 역할로 나눌 수 있습니다.

 

ReactRouter 사용법

먼저 리액트 앱을 설치한후 react-router 라이브러리를 npm을 사용하여 설치합니다.

# reactroute 폴더에 React App을 설치한다.
npx create-react-app routereact
cd routereact

# react-router 라이브러리를 설치한다.
npm install react-router-dom@버전

 

그다음 js파일로 react-router 컴포넌트를 꺼내옵니다.(import)

 

xxx.js

import React from "react":
import { BrowserRouter, Routes, Route , Link} from "react-router-dom";
//react-router-dom에서 필요한 것들을 import 한다.

ex) <BrowserRouter> 태그로 꼭 감싸줘야 합니다!

function App() {
    return (
        <BrowserRouter>
            <div>
                <nav>
                    <ul>
                        <li>
                            <Link to="/">Home</Link>
                        </li>
                        <li>
                            <Link to="/">Firstpage</Link>
                        </li>
                        <li>
                            <Link to="/">SecondPage</Link>
                        </li>
                    </ul>
                </nav>

                <Routes>
                    <Route path="/" element={<Home />} /> // function Home(){return <h1>Home<h1>;}
                    <Route path="/first" element={<Firstpage />} /> // function First(){return <h1>First!<h1>;}
                    <Route path="/second" element={<Secondpage />} /> // function Second(){return <h1>Second<h1>;}
                </Routes>
            </div>
        <BrowserRouter>
                )
    }

 export default App;

 

 

 

 

 

 

'React' 카테고리의 다른 글

Props/ State (React)  (0) 2023.03.14
JSX 활용하기  (0) 2023.03.13
React / JSX  (0) 2023.03.13

JSX 활용하기

 

JSX에서 엘리먼트를 작성할때는 최상위에서 Opening tag와 Closing tag로 감싸 하나의 태그안에 엘리먼트들을 넣어줘야 합니다. 

 <잘못된 예시 >

<div>
  <div>
    <h1>BAD!</h1>
  </div>
  <div>
    <h2>SO BAD!!</h2>
  </div>
</div>

<올바른 예시>

<div>
	<h1>Hello</h1>
<div>
<div>
	<h2>World</h2>
<div>

 

React에선 HTML 속성을 지정하려면 class가 아닌 className으로 표기해야 합니다.

<div className="yunsu">YUNSU</div>

 

JSX에서 JavaScript를 쓸때는 중괄호를 이용해야 합니다.

function TestApp() {
	const name = 'Yunsu Keum';
    
    return (
    	<div>
        	Hello,{name}!    //jsx에서 중괄호를 사용하여 name을 호출.
        </div>
        
        );
}

 

 

React 엘리먼트를 JSX로 작성할 때 "대문자"로 시작해야 합니다.

function Yunsu() {
	return <div>Yunsu</div>;
}

function HelloYunsu() {
	return <Yunsu />;
}

 

삼항연산자를 사용하여 조건부를 렌더링합니다.

<div>
    {
    	(10+10 ===2)? (<p>True!</p>) : (<p>False!</p>)
    }
</div>

 

여러개의 HTML 엘리먼트를 표시할 때 "map()" 함수를 사용합니다.

(map 함수를 사용할 때는 "key" 속성을 반드시 넣어야 합니다.)

const students = [
  {id: 1,name: "YUNSU KEUM", content: "Smart boy"}
  {id: 2,name: "BYEONGJIN KANG", content: "Fool boy")
  {id: 3,name: "DRAGON G", content: "Good boy"}
];

function Class() {
   const content = students.map((post)=>
      <div key={students.id}>
        <h3>{students.title}</h3>
        <p>{studemts.content}</p>
  );

  return (
     <div>
      {content}
    </div>
  
  );


}

'React' 카테고리의 다른 글

Props/ State (React)  (0) 2023.03.14
SPA / ReactRouter  (0) 2023.03.13
React / JSX  (0) 2023.03.13

React란?

프론트엔드 개발을 위한 사용자 인터페이스를 구축하는 데 사용되는 '오픈 소스 자바스크립투 라이브러리' 입니다.

페이스북에 의해 개발되었으며 현재는 페이스북과 개발자 커뮤니티에 의해서 유지되고 있습니다.

 

React 특징

  •  한 페이지를 보여주기 위해 HTML/CSS/JS로 나눠서 적는 것 보다 JSX를 활용한 선언형 프로그래밍을 지향합니다. 
  • 하나의 기능 구현을 위해 여러 종류의 코드를 묶어둔 컴포넌트를 기반으로 개발합니다. 컴포넌트로 분리시켜 독립적이고 재사용 가능한 코드를 작성하며 기능 자체에 집중하며 개발할 수 있습니다.
  • JavaScript 프로젝트 어디에서든 유연하게 적용 가능하며 Facebook에서 관리하기 때문에 안정적입니다. 또한 리액트 네이티브를 통해 모바일 개발도 가능합니다.

 

 

JSX

 JSX는 자바스크립트의 문법 확장으로 개발자들이 자바스크립트 코드 내 HTML과 같은 코드를 작성할 수 있게 해줍니다. React의 핵심 기능으로써 사용자 인터페이스 구성 요소의 구조와 appearance를 정의할 때 사용합니다.

 

 개발자들은 JSX를 사용해 HTML과 유사한 코드를 직접 자밧크립트 파일 내에 작성할 수 있고 이 코드는 DOM을 만들고 자바스크립트 코드로 컴파일 될 수 있습니다.

 

그 예로 아래 코드와 같이 자바스크립트 코드를 작성해 버튼을 만들어 DOM에 추가하는게 아니라 HTML처럼 보이는 JSX코드를 작성해 버튼을 추가할 수 있습니다.

<button onClick={handleClick}>Come on!</button>

 

 하지만 JSX는 브라우저가 바로 실행할 수 있는 JavaScript코드가 아닙니다. 그래서 브라우저가 이해할 수 있는 브라우저 코드로 변환을 해줘야 하는데 이때 이용하는 것이 Babel!   Babel은 JSX를 브라우저가 이해할 수 있는 JavaScript로 컴파일합니다. 

 

결론 : React 에서는 DOM과 다르게 CSS,JSX,문법만을 가지고 웹 애플리케이션을 개발할 수 있습니다. 

 

 

'React' 카테고리의 다른 글

Props/ State (React)  (0) 2023.03.14
SPA / ReactRouter  (0) 2023.03.13
JSX 활용하기  (0) 2023.03.13

+ Recent posts