[TIL] 220124

Lee Syong·2022년 1ė›” 24ėž
0

TIL

ëŠĐ록 ëģīęļ°
159/204
post-thumbnail

📝 ė˜Ī늘 한 ęēƒ

  1. CREATE REACT APP

📚 ë°°ėšī ęēƒ

1. CREATE REACT APP

1) ëĶŽė•ĄíŠļ 프로ė íŠļ ėƒė„ą

create-react-appėœžëĄœ ëĶŽė•ĄíŠļ 프로ė íŠļëĨž ėƒė„ąí•  ėˆ˜ ėžˆë‹Ī.

  • 터ëŊļ널ė—ė„œ ë‹ĪėŒęģž 같ė€ 멅ë đė–īëĨž ė‹Ī행한ë‹Ī.
$ npx create-react-app [ėƒė„ąí•  íī더 ėīëĶ„]
  • VS code로 í•īë‹đ íī더ëĨž ė—°ë‹Ī
$ code [ėƒė„ąí•œ íī더 ėīëĶ„]
  • VS code ë‚īėžĨ 터ëŊļ널ė—ė„œ ë‹ĪėŒęģž 같ė€ 멅ë đė–īëĨž ėž…ë Ĩ하ëĐī ëļŒëžėš°ė €ė— create-react-appė˜ ęļ°ëģļ 페ėīė§€ę°€ 뜮ë‹Ī.
// package.json 파ėž ė°ļęģ 
$ npm start

2) íŠđė§•

  • src íī더ė—ëŠ” ėž‘ė„ąí•  ëŠĻ든 ė―”ë“œë“Īė„ ë‹īė•„ė•ž 한ë‹Ī. React JS는 ėīëĨž public íī더ė˜ index.html 파ėž ė•ˆė˜ <div id="root"></div> ė•ˆė— ë„Ģė–īėĪ€ë‹Ī.

  • VS codeė—ė„œ ė―”ë“œëĨž ėˆ˜ė •í•œ 후 ė €ėžĨ하ëĐī ëļŒëžėš°ė €ė—ė„œ 페ėīė§€ëĨž ėƒˆëĄœęģ ėđĻ 하ė§€ ė•Šė•„도 ėžë™ėœžëĄœ ė—…데ėīíŠļ된ë‹Ī.

  • Node.jsëĨž ėīėšĐí•ī ėž‘ė—…하ęļ° 때ëŽļė— 하나ė˜ 파ėžë‹đ 하나ė˜ ėŧī폮넌íŠļ만ė„ 가ė§€ë„록 한 후 ę·ļ ėŧī폮넌íŠļëĨž index.js 파ėžė—ė„œ inport 할 ėˆ˜ ėžˆë‹Ī.

3) ėž‘ė—… 환ęē― ęĩŽėķ•

src íī더ė—ė„œ 가ėžĨ í•ĩė‹Žėī 되는 파ėžė€ React ė•ąė„ 렌더링í•īėĢžëŠ” index.js 파ėžėīë‹Ī.
index.js 파ėžė—ė„œ 필ėš” ė—†ëŠ” ė―”ë“œë“Īė€ ė‚­ė œí•˜ė—Ž ë‹ĪėŒęģž 같ėī ėˆ˜ė •í–ˆë‹Ī.

import React from "react";
import ReactDOM from "react-dom";
import App from "./App";

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById("root")
);

App.js 파ėžė—ė„œë„ 필ėš” ė—†ëŠ” ė―”ë“œë“Īė„ ė‚­ė œí•˜ė—Ž ë‹ĪėŒęģž 같ėī ėˆ˜ė •í–ˆë‹Ī.

function App() { // App ėŧī폮넌íŠļ
  return <div>Welcome back to React!</div>;
}

export default App;

src íī더ė—ė„œ index.js 파ėžęģž App.js 파ėžë§Œ ë‚Ļęļ°ęģ  나ëĻļė§€ ëŠĻ든 파ėžë“Īė„ ė‚­ė œí•œë‹Ī.

4) ėŧī폮넌íŠļ ėķ”ę°€

(1) export default & import / prop ė‚ŽėšĐ

Button.js 파ėžė— Button ėŧī폮넌íŠļëĨž 만든 후 export default 했ë‹Ī.

App.js 파ėžė—ė„œ Button ėŧī폮넌íŠļëĨž import 한 후 ėīëĨž App í•Ļėˆ˜ę°€ return 하는 div 태ę·ļ ė•ˆė— ë„Ģė—ˆë‹Ī.
(만ė•― import 한 후 ė‚ŽėšĐ하ė§€ ė•ŠëŠ”ë‹ĪëĐī React가 ė―˜ė†”ė— ęē―ęģ ëĨž 띄ė›ŒėĪ€ë‹Ī.)

(2) PropTypes

prop-typesëĨž ė„Īėđ˜í•œë‹Ī.

$ npm i prop-types

Button.js 파ėžė—ė„œ prop-typesëĨž import 한 후 ėīëĨž ė‚ŽėšĐ한ë‹Ī.

// Button.js
import PropTypes from "prop-types";

Button.propTypes = {
  text: PropTypes.string.isRequired,
};

5) CSS modules

create-react-app(ėī하 cra)로 ėž‘ė—…í•  때 CSSëĨž ėķ”ę°€í•˜ęļ° ėœ„í•īė„œëŠ” 3가ė§€ ė˜ĩė…˜ ėĪ‘ 하나ëĨž ė„ íƒí•  ėˆ˜ ėžˆë‹Ī.

(1) styles.css 파ėžė„ index.js 파ėžė—ė„œ import

ėēŦ ëēˆė§ļ ë°Đëē•ė€ src íī더ė— ė˜Īė§ 하나ė˜ CSS 파ėžė„ 만드는 ęēƒėīë‹Ī.

// styles.css
button {
  background-color: lightblue;
  color: white;
}

ėž‘ė„ąí•œ ėŠĪ타ėžė„ ė ėšĐ하ęļ° ėœ„í•ī index.js 파ėžė—ė„œ styles.css 파ėžė„ import 한ë‹Ī.

// index.js
import "./styles.css";

ę·ļ럮나 ėī렇ęēŒ 하ëĐī cra ė•ą ė•ˆė˜ ëŠĻ든 buttonė— 대í•ī í•īë‹đ ėŠĪ타ėžėī ė „ė—­ė ėœžëĄœ ė ėšĐ되ęģ  만ë‹Ī.

(2) props ė‚ŽėšĐ

Button ėŧī폮넌íŠļė— style ė†ė„ąė„ ėķ”ę°€í•œë‹Ī.

function Button({ text }) {
  return (
    <button style={{ backgroundColor: "lightblue", color: "white" }}>
      {text}
    </button>
  );
}

ę·ļ럮나 ėī렇ęēŒ 하ëĐī ëŠĻ든 ëē„튞마ë‹Ī 따로 ėŠĪ타ėžė„ ėķ”ę°€í•īėĪ˜ė•ž 한ë‹Ī.

(3) CSS modules

src íī더 ė•ˆė— Button.module.css 파ėžė„ ėƒė„ąí•œë‹Ī.
í•īë‹đ 파ėžė— ė—ŽëŸŽ ëē„튞ë“Īė— ė ėšĐ할 ėŠĪ타ėžë“Īė„ ė„ íƒėž 등ė„ ėīėšĐí•ī ęĩŽëķ„í•ī ėž‘ė„ąí•œë‹Ī.

.btn {
  background-color: lightblue;
  color: white;
}

Button.js 파ėžė—ė„œ Button.module.css 파ėžė„ import 한 한ë‹Ī.
Button ėŧī폮넌íŠļ가 return 하는 button ėš”ė†Œė— classëĨž ėķ”ę°€í•œë‹Ī.

ėī때 import 및 class ėķ”가는 ë‹ĪėŒęģž 같ėī í•īė•ž 한ë‹Ī.
ė‹Īė œëĄœ 개발ėž 도ęĩŽė—ė„œ Elements 탭ė„ 확ėļí•īëģīëĐī ëŽīėž‘ėœ„ 랜ëĪ class가 ëķ€ė—Žë˜ëŠ” ęēƒė„ 확ėļ할 ėˆ˜ ėžˆë‹Ī.

import styles from "./Button.module.css";

function Button({ text }) {
  return <button className={styles.btn}>{text}</button>;
}

âœĻ ë‚īėž 할 ęēƒ

  1. EFFECTS
profile
ëŠĨ동ė ėœžëĄœ ė‚īėž, 행ëģĩ하ęēŒðŸ˜

0개ė˜ 댓ęļ€