[TIL] 220124

dev·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
dev log

0ę°œė˜ 댓ęļ€