๐Ÿ•ฏ ๊นŒ๋จน์„๊นŒ๋ด ์ ๋Š” [TIL] : 220813

๋ฏธ๋‹ˆยท2022๋…„ 8์›” 13์ผ
1
post-thumbnail

01. ์™œ ์ž์Šค๋กœ ์Šคํƒ€์ผ ์ ์šฉ์ด ์•ˆ๋˜์ ธ

๊ฐ•์˜ ์ค‘ DOM์š”์†Œ์— ์ ‘๊ทผํ•˜์—ฌ ์Šคํƒ€์ผ์„ ์ค˜๋ณด๊ธฐ๋กœ ํ•˜์˜€๋‹ค!

๐Ÿ”ฝ์ž์‹ ๋งŒ๋งŒํ•œ ๋‚˜์˜ ์ฝ”๋“œ

const todoTitle = document.getElementsByClassName('todo_title')

console.log(todoTitle);
todoTitle.style.backgroundColor = 'red'

๋”ธ!๊น๐Ÿ–ฑ๐Ÿ–ฒ

*์—ฅ...์™œ์ €๋ ‡๊ฒŒ ๋– ์š”...?*

๋ฐ”๋ณด! HTMLCollection์€ ์œ ์‚ฌ๋ฐฐ์—ด์ด๋ผ๊ณ ^^
์œ ์‚ฌ๋ฐฐ์—ด์€ Array์˜ ๋‚ด์žฅํ•จ์ˆ˜๋ฅผ ์“ธ ์ˆ˜ ์—†๋‹ต๋‹ˆ๋‹ค์ž‰!

๊ทธ๋ž˜์„œ ์–ด์บ ํ•ด๊ฒฐํ• ๊ฑด๋””!

Array.from์œผ๋กœ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ํ•ด์ฃผ๊ณ  forEach ์จ์„œ ํ•˜๋‚˜์”ฉ ๋ฐ”๊ฟ”์ฃผ์„ธ์—ฌ

const todoTitle = Array.from(document.getElementsByClassName('todo_title'))

console.log(todoTitle); // ๐Ÿ‘‰ [h3.todo_title, h3.todo_title, h3.todo_title]

todoTitle.forEach(todoTitle => {
  todoTitle.style.color = "red"
})

์ž˜๋“ค์–ด๊ฐ„๊ฑธ ํ™•์ธํ• ์ˆ˜ ์žˆ๋‹นใ…Ž

02. Component๊ฐ€ ๋ญ์—ฌ?

๋ฆฌ์•กํŠธ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ปดํฌ๋„ŒํŠธ๋กœ ๋งŒ๋“ค์–ด์„œ ํ™œ์šฉ

// index.js

import ReactDOM from 'react-dom'

function Hello() {
  return <h1>๋ฆฌ์•กํŠธ์•ผ ์‚ด๋ ค์กฐ</h1>;
}

const element = {
  <>
    <Hello /> // ๐Ÿ‘‰ Helloํ•จ์ˆ˜๊ฐ€ ๋ฆฌํ„ดํ•˜๋Š” ๋ฆฌ์•กํŠธ ์—˜๋ฆฌ๋จผํŠธ
    <Hello />
    <Hello />
  </>
 );

ReactDom.render(element, document.geElementById('root'));

element ๋ณ€์ˆ˜์—์„œ JSX์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ• ๋•Œ ํ•จ์ˆ˜์ด๋ฆ„(Hello)์„ ๊ฐ€์ง„ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค...์ด๊ฒŒ ๋ฐ”๋กœ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ(React Component)

โš›๏ธ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“œ๋Š” ๊ทœ์น™!

  1. ํ•จ์ˆ˜์ด๋ฆ„์„ ์ฒซ ๊ธ€์ž๋ฅผ ๋ฐ˜๋“œ์‹œ ๋Œ€๋ฌธ์ž
  2. JSX๋ฌธ๋ฒ•์œผ๋กœ ๋งŒ๋“  ๋ฆฌ์•กํŠธ ์—˜๋ฆฌ๋จผํŠธ ๋ฆฌํ„ด..

03. ๋ฆฌ์•กํŠธ ํŒŒ์ผ๋“ค!

index.js | App.js | index.html

*index.js๐Ÿ”ฝ* (srcํด๋”์— ์žˆ์Œ)

๋ฉ”์ธ ํ”„๋กœ๊ทธ๋žจ! ์—ฌ๊ธฐ์„œ HTMLํ…œํ”Œ๋ฆฟ & ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐํ•ฉํ•ด์„œ ๋ Œ๋”๋งํ•˜๊ณ  ๋ทฐ์— ๋ณด์—ฌ์คŒ [ HTML Template + Component =(rendering)=>> View ]

App.js (srcํด๋”์— ์žˆ์Œ)

์ปดํฌ๋„ŒํŠธ ์ •์˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ!!! ์‹ค์ œ๋กœ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” ๋‚ด์šฉ๋“ค์€ ์—ฌ๊ธฐ์„œ ๋งŒ๋“ค์–ด์ง„๋‹น!

index.html (publicํด๋”์— ์žˆ์Œ)

index.js์— ๋Œ€์‘ ๋œ๋‹ค. HTMLํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์ž„!!
<์ง์ ‘ํ‘œ์‹œ๋˜๋Š”๊ฑด ์•„๋‹ˆ๊ณ  index.js์— ์˜ํ•ด ์ผ์–ด๋‚œ ๋ Œ๋”๋ง ๊ฒฐ๊ณผ๊ฐ€ ํ‘œ์‹œ๋˜์–ด์š”!>
โš ๏ธ ์ด๋ฆ„ ๋ฐ”๊พธ์ง€๋งˆ์‹œ์˜ค!

App.js

๐Ÿ”ฝ react์—์„œ ์ œ๊ณตํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ {Component}๋ฅผ ์ž„ํฌํŠธ!!!!

import React, {Component} from 'react';

๐Ÿ”ฝ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ

function UserGreeting(props) {
  return <h1>Welcome back!</h1>;
}

function GuestGreeting(props) {
  return <h1>Please sign up.</h1>;
}

function Greeting(props) {
  const isLoggedIn = props.isLoggedIn;
  if (isLoggedIn) {
    return <UserGreeting />;
  }
  return <GuestGreeting />;
}

๐Ÿ”ฝ ๋ Œ๋”๋ง...

ReactDOM.render(
  // Try changing to isLoggedIn={true}:
  <Greeting isLoggedIn={false} />,
  document.getElementById('root')
);
profile
ใ…‚r๋žŒใ„ธrใ„นr, ๆฐดใ„ธrใ„นr...๐ŸŒŠ

2๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2022๋…„ 8์›” 14์ผ

์ธ๋„ค์ผ์ด ์ฐฐ์ง€๋„ค์š”

1๊ฐœ์˜ ๋‹ต๊ธ€