react
-
- [React.js] ๋ผ์ฐํฐ ์ค์ ๋ฐฉ๋ฒ (React Router)
๋ผ์ฐํฐ ์ค์ ๋ฐฉ๋ฒ (React Route)๋ค์ด๊ฐ๋ฉฐReact Router(@react-router-dom@)์ ์ด์ฉํ์ฌ ๋ผ์ฐํฐ๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒํจํค์ง ์ค์นํ๊ธฐ@react-router-dom@ ํจํค์ง๋ฅผ ์ค์นํ๋ ค๋ฉด ํฐ๋ฏธ๋์ ์๋ ๋ช ๋ น์ ์คํํ๋ค.$ npm install react-router-dom # yarn add react-router-dom ๋ฐฉ๋ฒ 1@createBrowserRouter@๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.import { createBrowserRouter, RouterProvider,} from "react-router-dom";import HomePage from "./pages/Home";import ProductsPage from "./pages/Products";co..
2024.07.02 -
- [React.js] ๋ฆฌ์กํธ์์์ ์ํ ๊ด๋ฆฌ ๋ฐฉ๋ฒ
๋ฆฌ์กํธ์์์ ์ํ ๊ด๋ฆฌ ๋ฐฉ๋ฒ๋ฆฌ์กํธ(React)์์ ์ํ ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์.๋ฆฌ์กํธ์์๋ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํด ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ๋ฐฉ๋ฒ์ ์ ํํ๋ ๊ฒ์ด ์ค์ํ๋ค. ์ํ ๊ด๋ฆฌ ๋ฐฉ๋ฒ1. ์ง์ญ ์ํ(Local State)๋ฆฌ์กํธ์ useState ํ ์ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.์์ ๊ท๋ชจ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ๋จ์ผ ์ปดํฌ๋ํธ์์ ์ํ ๊ด๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ ํฉํ๋ค.import React, { useState } from 'react';function Counter() { const [count, setCount] = useState(0); return ( You clicked {count} times setCount(count..
2024.06.30 -
- [React.js] <form> ์์์์ ์ ์ถ(Submit) ๋ฒํผ ์ฌ์ฉ ์ ๊ธฐ๋ณธ ๋์ ๋ง๋ ๋ฐฉ๋ฒ
์์์์ ์ ์ถ(Submit) ๋ฒํผ ์ฌ์ฉ ์ ๊ธฐ๋ณธ ๋์ ๋ง๋ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐ@@ ์์ ์์ @type@์ด @submit@์ธ ๋ฒํผ์ ๋๊ณ , ํด๋ฆญํ ๋, ํผ ์ ์ถ ํจ๊ณผ๊ฐ ๋ฐ์ํ๋ค.ํด๋น ๋ฒํผ์ ํด๋ฆญํ ๋ ํผ ๋ฐ์ดํฐ๊ฐ ์๋ฒ๋ก ์ ์ก๋๋ฉด์ ํ์ด์ง๊ฐ ์๋ก๊ณ ์นจ ๋๋๋ฐ, ์ด๊ฒ์ ํผ์ ๊ธฐ๋ณธ ๋์์ด๋ค. // ... ์ ์ถ ์ด๋ ํผ ์ ์ถ ํจ๊ณผ ๋ง์ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒ๋ฐฉ๋ฒ 1 : @@ ์์์ @type@ ์์ฑ์ @button@์ผ๋ก ์ง์ ํ๊ธฐ@@ ์์์ @type@ ์์ฑ์ @submit@์ด ์๋ @button@์ผ๋ก ์ง์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.function handleSubmit() { console.log("Submitted!");} ๋ก๊ทธ์ธ ๋ฐฉ๋ฒ 2 : @@ ์์์ @onClick@ ์ด๋ฒคํธ ํจ์์ @event...
2024.06.28 -
- [React.js] memo() ์ฌ์ฉํ ๋ ์ฃผ์ํ ์
memo() ์ฌ์ฉํ ๋ ์ฃผ์ํ ์ ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์ @memo()@๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์ํ ์ ์ ์ ๋ฆฌํด๋ณธ๋ค. memo()๊ฐ๋ ํจ์ํ ์ปดํฌ๋ํธ๋ฅผ ๋ฉ๋ชจ์ด์ ์ด์ (Memoization)ํ์ฌ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ๋ฐฉ์งํ๋ ์ญํ ์ ํ๋ค.์ฃผ๋ก ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด ์ฌ์ฉ๋๋ค.import { memo } from 'react';const MyComponent = memo(function MyComponent({ prop1, prop2 }) => { // ...});export default MyComponent; ๊ธฐ๋ณธ์ ์ผ๋ก ์ปดํฌ๋ํธ์ @props@๊ฐ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฉด ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋ ๋๋งํ์ง ์๋๋ค.@props@์ ์์ ๋น๊ต(Shallow Comparison)๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋ค.์์ ๋น๊ต๋ ๊ธฐ๋ณธ ์๋ฃํ(์ซ์, ๋ฌธ..
2024.06.25 -
- [React.js] useEffect์ useCallback
useEffect์ useCallback๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ์์ ์ฌ์ฉ๋๋ @useCallback@๊ณผ @useEffect@์ ๋ํด ์์๋ณด์. @useCallback@๋ฆฌ์กํธ์์ ํจ์๋ฅผ ๋ฉ๋ชจ์ด์ ์ด์ (Memoization)ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.๋ถํ์ํ ํจ์์ ์ฌ์์ฑ์ ๋ฐฉ์งํ๊ณ , ํจ์๊ฐ ์์กดํ๋ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋๋ง ์๋ก์ด ํจ์๋ฅผ ์์ฑํ๋๋ก ํ ์ ์๋ค. ์์ ์ฝ๋์๋์ ์ฝ๋์์ @handleClick@ ํจ์๋ @count@ ๋ณ์๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง ์ฌ์์ฑ ๋๋ค.๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ @handleClick@ ํจ์๋ ์ฌ์์ฑ๋์ง ์์ผ๋ฉฐ, ๊ฐ์ ํจ์๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ฒ ๋๋ค.์ด๋ ๊ฒ ํ ๊ฒฝ์ฐ ํจ์์ ์ฌ์์ฑ์ ์ต์ํํ์ฌ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ํ๋๋ฐ ๋์์ ์ค ์ ์๋ค.import React, { useCallback, useState } from 'rea..
2024.06.24 -
- [React.js] useReducer ํ
useReducer ํ ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ์ฌ์ฉ๋๋ @useReducer@ ํ ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. @useReducer@ ๊ฐ๋ ์ปดํฌ๋ํธ์ ๋ฆฌ๋์(Reducer)๋ฅผ ์ถ๊ฐํ๋ ๋ฆฌ์กํธ ํ const [state, dispatch] = useReducer(reducer, initialArg, init?) (์ฐธ๊ณ ) ๋ฆฌ๋์ค(Reduce, @reduce()@)๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ ๊ณต๋ ํจ์(@callback@ ํจ์)๋ฅผ ์คํํ๊ณ ํ๋์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๋ ๋ฉ์๋๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ๋์ (Accumulate)ํ์ฌ ๋จ์ผ ๊ฐ์ผ๋ก ์ค์ด๋ ์ญํ ์ ํ๋ค.์ฃผ๋ก ํฉ๊ณ, ํ๊ท , ์ต๋๊ฐ, ์ต์๊ฐ, ๊ฐ์ฒด ์์ฑ ๋ฑ ๋ค์ํ ๊ฒฝ์ฐ์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ค.const array = [1, 2, 3, 4, 5];const result = a..
2024.06.07 -
- [Tailwind CSS] whitespace-pre-wrap ํด๋์ค
whitespace-pre-wrap ํด๋์ค๋ค์ด๊ฐ๋ฉฐํ ์ผ์๋(Tailwind) CSS์ @whitespace-pre-wrap@ ํด๋์ค์ ๋ํด ์์๋ณด์. @whitespace-pre-wrap@Tailwind CSS์์ ์ฌ์ฉํ๋ ์ ํธ๋ฆฌํฐ ํด๋์ค ์ค ํ๋๋ก, HTML ์์ ๋ด์ ํ ์คํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ค.์ด ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์คํธ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ฒ๋ฆฌํ ์ ์๋ค. ๊ณต๋ฐฑ ์ ์งํ ์คํธ ๋ด์ ์ฐ์๋ ๊ณต๋ฐฑ์ ์ ์งํ๋ค.์ฌ๋ฌ ๊ฐ์ ๊ณต๋ฐฑ์ด ์์ด๋ ํ๋๋ก ์ถ์ฝ๋์ง ์๋๋ค. ๊ฐ์ ์ค๋ฐ๊ฟํ ์คํธ ๋ด์ ์ค๋ฐ๊ฟ ๋ฌธ์๋ฅผ ์ ์งํ๋ค.ํ ์คํธ์ ํฌํจ๋ ์ค๋ฐ๊ฟ(@\n@)์ ์ค์ ๋ก ์ค๋ฐ๊ฟ์ด ๋๋ค. ์๋ ์ค๋ฐ๊ฟํ ์คํธ๊ฐ ์์์ ๋๋น๋ฅผ ์ด๊ณผํ๋ฉด ์๋์ผ๋ก ์ค์ด ๋ฐ๋๋ค.์ด ํด๋์ค๋ @white-space: pre-wrap;@ CSS ์์ฑ๊ณผ ๋์ผํ ํจ..
2024.06.02 -
- [React.js] map ํจ์๋ฅผ ์ฌ์ฉํ ๋ ์ค๊ดํธ({})์ ์๊ดํธ(())
map ํจ์๋ฅผ ์ฌ์ฉํ ๋ ์ค๊ดํธ({})์ ์๊ดํธ(())๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React)์์ ์ค๊ดํธ @{}@์ ์๊ดํธ @()@๋ ์ฃผ๋ก JSX ์์์ ์ฌ์ฉ๋๋ฉฐ, ํนํ @map()@ ๋ฉ์๋์ ํจ๊ป ์ฌ์ฉ๋ ๋ ์ฃผ์ํด์ผ ํ ์ ์ด ๋ช๊ฐ์ง ์๋ค.@map@ ํจ์๋ฅผ ์ฌ์ฉํ ๋ ์ค๊ดํธ(@{}@)์ ์๊ดํธ(@()@)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ์ฐจ์ด์ ๋ํด ์์๋ณด์. ์ค๊ดํธ(@{}@)์๋ฐ์คํฌ๋ฆฝํธ ํํ์(Expression)์ ๊ฐ์ธ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.์ค๊ดํธ๋ฅผ ์ฌ์ฉํ ๋๋ ๋ฐ๋์ ๋ฐํ๊ฐ์ด ์์ด์ผ ํ๋ฉฐ, ๋ช ์์ ์ผ๋ก @return@ ํค์๋๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ ๋ฐํํด์ผ ํ๋ค.์ฌ๋ฌ ์ค์ ์ฝ๋๊ฐ ํ์ํ๊ฑฐ๋ ์กฐ๊ฑด๋ฌธ ๋ฑ ๋ณต์กํ ๋ก์ง์ ์์ฑํด์ผ ํ ๋ ์ฌ์ฉํ๋ค.const items = ['Apple', 'Banana', 'Cherry'];const listItem..
2024.05.29 -
- [VS Code] ๋น์ฃผ์ผ ์คํ๋์ค ์ฝ๋(VS Code)์์ JSX ์๋ ์์ฑ ๊ธฐ๋ฅ ์ผ๋ ๋ฐฉ๋ฒ
๋น์ฃผ์ผ ์คํ๋์ค ์ฝ๋(VS Code)์์ JSX ์๋ ์์ฑ ๊ธฐ๋ฅ ์ผ๋ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐ๋น์ฃผ์ผ ์คํ๋์ค ์ฝ๋(VS Code)์์ @return@ ๋ฌธ ์์ JSX๋ฅผ ์์ฑํ ๋, ์๋ ์์ฑ ๊ธฐ๋ฅ(Auto Complete)์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์. ๋ฐฉ๋ฒ์ด ๋ฐฉ๋ฒ์ ์ํด์๋ VS Code ์ค์ ์ ๋ฐ๋ก ํด์ค์ผ ํ๋ค.์ฐ์ , @Ctrl@(@Cmd@) + @,@๋ฅผ ๋๋ฌ์ VS Code ์ค์ ํ์ด์ง๋ฅผ ์ฐ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋จ์ @[Open Settings (JSON)]@ ์์ด์ฝ์ ํด๋ฆญํ๋ค.๊ทธ๋ฆฌ๊ณ ์๋์ ์ฝ๋๋ฅผ @settings.json@ ์ฝ๋ ์์ ๋ฃ์ด์ค๋ค.{ ... "emmet.includeLanguages": { "javascript": "javascriptreact" }, "emmet.syntaxProfiles"..
2024.05.28 -
- [React.js] ํ ์คํธ ๋ฉ์์ง ๋์ฐ๊ธฐ ๊ฐ๋จ ์์ (ReactDOM.createPortal)
ํ ์คํธ ๋ฉ์์ง ๋์ฐ๊ธฐ ๊ฐ๋จ ์์ (ReactDOM.createPortal)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํํด๋ณธ ํ ์คํธ(Toast) ๋ฉ์์ง ๋์ฐ๊ธฐ ๊ฐ๋จ ์์ ์ฝ๋๋ฅผ ์ฌ๋ ค๋ณธ๋ค.๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด @react-dom@ ํจํค์ง์ @createPortal@ ํจ์๋ฅผ ์ฌ์ฉํ์๋ค. ์ฝ๋ App.jsximport React from 'react';import Toast from './Toast';function App() { const [isToastVisible, setIsToastVisible] = React.useState(false); function handleEnrol() { setIsToastVisible(true); setTimeout(() => { setIs..
2024.05.21 -
- [React.js] useImperativeHandle๊ณผ forwardRef
useImperativeHandle๊ณผ forwardRef๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ์ฌ์ฉ๋๋ @useImperativeHandle@๊ณผ @forwardRef@์ ๋ํด ์์๋ณด์.@forwardRef@์ @useImperativeHandle@์ ์ปดํฌ๋ํธ ๊ฐ์ ์ฐธ์กฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ๋๊ตฌ์ด๋ค.์ด ๋๊ฐ์ง ๊ฐ๋ ์ ์ดํดํ๋ฉด ์ปดํฌ๋ํธ ์ธ๋ถ์์ ๋ด๋ถ์ DOM ์์๋ ๋ฉ์๋์ ์ ๊ทผํ ์ ์๊ฒ ๋์ด, ๊ณ ๊ธ ์ปดํฌ๋ํธ ์ค๊ณ์ ์ ์ฉํ๋ค๊ณ ํ๋ค. forwardRef๊ฐ๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ๋ฌ๋ @ref@๋ฅผ ์์ ์ปดํฌ๋ํธ๊ฐ ๋ฐ์ ์ ์๊ฒ ํด์ค๋ค.@forwardRef@๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์์ ์ปดํฌ๋ํธ์ @ref@๋ฅผ ์ ๋ฌํ ์ ์๋ค.@ref@๋ DOM ์์์๋ง ๋ถ์ผ ์ ์๋ค.ํ์ง๋ง @forwardRef@๋ฅผ ์ฌ์ฉํ๋ฉด, ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ..
2024.05.21 -
- [React.js] ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ์์ ๋๊ธฐ๋ ๋ฐฉ๋ฒ
๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ์์ ๋๊ธฐ๋ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ์์ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ์์๋ฅผ ๋๊ธฐ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์. ๋ฐฉ๋ฒ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ๋๊ธธ ์์์ ํ์ ์ ์ง์ ํ ์ ์๋๋ฐ, @string@ ํํ๋ก ์ง์ ํด์ฃผ๋ฉด ๋๋ค.์ด๋, @prop@ ์ด๋ฆ์ ์ฒซ ๊ธ์๋ ํญ์ ๋๋ฌธ์์ด์ด์ผ ํ๋ค.App.jsx@ButtonsContainer@ @prop@์ @"menu"@๋ก ์ง์ ํด๋ณด์๋ค.return ( handleSelect("components")} > Components handleSelect("jsx")} > JSX ..
2024.05.14 -
- [React.js] ์ค์๊ฐ์ผ๋ก ํน์ ์์์ ๊ธธ์ด๊ฐ ๊ฐ์ ธ์ค๊ธฐ
์ค์๊ฐ์ผ๋ก ํน์ ์์์ ๊ธธ์ด๊ฐ ๊ฐ์ ธ์ค๊ธฐ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ์ ์ ์ค์๊ฐ์ผ๋ก ํน์ ์์์ ๊ธธ์ด๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ์์๋ณด์. ๋ฐฉ๋ฒ์ฐ์ @useRef@๋ฅผ ์ด์ฉํ์ฌ ์ค์๊ฐ์ผ๋ก ๊ธธ์ด๊ฐ์ ๊ฐ์ ธ์ฌ ์์๋ฅผ ์ง์ ํด์ค๋ค.import {useRef} from 'react';// ...const horiRef = useRef(null);// ...return ( {/* ... */} ); ๋ค์๊ณผ ๊ฐ์ด @useEffect@์ @ResizeObserver@๋ฅผ ์ด์ฉํ์ฌ ํด๋น ์์์ ์ฌ์ด์ฆ๊ฐ์ ์ค์๊ฐ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค.import { useEffect } from 'react';useEffect(() => { const resizeObserver = new ResizeObserver((entries) => ..
2024.03.26 -
- [React.js] ๋ง์ฐ์ค ํธ๋ฒ ํจ๊ณผ๋ฅผ ์ ์ฉํ๊ธฐ ์ํ ์ปค์คํ ํ ๋ง๋ค๊ธฐ (useHover.js)
๋ง์ฐ์ค ํธ๋ฒ ํจ๊ณผ๋ฅผ ์ ์ฉํ๊ธฐ ์ํ ์ปค์คํ ํ ๋ง๋ค๊ธฐ (useHover.js) ๋ค์ด๊ฐ๋ฉฐ ์์ ์์ ๋ง์ฐ์ค ์ปค์๋ฅผ ํธ๋ฒ ์, ํจ๊ณผ๊ฐ ์๋ํ ์ ์๋๋ก ์ปค์คํ ํ ์ ๋ง๋ค์ด๋ณด์. ๋ฐฉ๋ฒ ๊ธฐ์กด์ ๋ฐฉ๋ฒ ์ปค์คํ ํ ์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ, @mouseover@, @mouseout@์ ๋ํ ๊ฐ๊ฐ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์๋ฅผ ๋ง๋ค์ด์ ๋ง์ฐ์ค ํธ๋ฒ ํจ๊ณผ๋ฅผ ์ ์ฉ์ํค๊ณ ์ถ์ ๋์์ ์ฐ๊ฒฐํด ์ฃผ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ ์ ์์๋ค. import React, { useState } from react; const MyComponent = () => { const [isHovered, setIsHovered] = useState(false); const handleMouseOver = () => { setShowPopup(true); }; cons..
2024.02.20 -
- [React.js] Node.js ์ค์น๋ถํฐ ๋ฆฌ์กํธ ํ๋ก์ ํธ ํ ์คํธ๊น์ง ์ ๋ฆฌ
Node.js ์ค์น๋ถํฐ ๋ฆฌ์กํธ ํ๋ก์ ํธ ํ ์คํธ๊น์ง ์ ๋ฆฌ ๋ค์ด๊ฐ๋ฉฐ Node.js ์ค์น, NVM ์ค์น, ๋ฆฌ์กํธ ํ๋ก์ ํธ ์์ฑ ๋ฐ ํ ์คํธ๊น์ง์ ๊ณผ์ ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒ (1) Node.js ์ค์น ํ์ฌ ๋๋ ํ์์ ์ฌ์ฉํ๊ณ ์๋ ๋ฒ์ ์ Node.js๋ฅผ ์ค์นํ๋๋ก ํ๋ค. Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org (2) nvm ์ค์น NVM(Node Version Manager)์ Node.js์ ๋ฒ์ ์ ๊ด๋ฆฌํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ด๋ค. @nvm-setup.exe@ ์ค์น ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ ์คํํ๋ค. Releases · coreybutler/nvm-windows A node.js version mana..
2024.02.05 -
- [React.js] ํด๋์ค ์ปดํฌ๋ํธ(Class Components)์ ํจ์ํ ์ปดํฌ๋ํธ(Functional Components)
ํด๋์ค ์ปดํฌ๋ํธ(Class Components)์ ํจ์ํ ์ปดํฌ๋ํธ(Functional Components) ๋ค์ด๊ฐ๋ฉฐ ๋ฆฌ์กํธ(React)๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํด๋์ค ์ปดํฌ๋ํธ(Class Components)์ ํจ์ํ ์ปดํฌ๋ํธ(Functional Components) 2๊ฐ์ง ์ ํ์ ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํ๋ค. ์ต์ ๋ฆฌ์กํธ ๋ฒ์ ์์๋ ํจ์ํ ์ปดํฌ๋ํธ์ ํ ์ค(Hooks)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋๋ฉฐ, ์ํ ๊ด๋ฆฌ๋ ๋ผ์ดํ์ฌ์ดํด ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ๋ ๊ฐ๋จํ๊ฒ ํ ์ ์๋ ์ฅ์ ์ด ์๋ค. ๊ทธ๋ฌ๋ ์ด๋ฏธ ํด๋์ค ์ปดํฌ๋ํธ๋ก ์์ฑ๋ ์ฝ๋๊ฐ ๋ง๋ค๋ฉด, ๋ฐ๋ก ๋ณ๊ฒฝํ ํ์๋ ์๋ค. ํด๋์ค ์ปดํฌ๋ํธ์ ํจ์ํ ์ปดํฌ๋ํธ์ ๋ํด ์์๋ณด์. ํด๋์ค ์ปดํฌ๋ํธ(Class Components) ES6์ ํด๋์ค ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ์์ฑ๋๋ค. @class@ ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ..
2023.12.14 -
- [React.js] ํ (Hook)
ํ (Hook)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React)์์ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ์ ์ธ ํ (Hook)๋ค์ ๋ํด ์์๋ณด์. ํ (Hook)๊ฐ๋ ํจ์ ์ปดํฌ๋ํธ์์ ์ํ(State)๋ ์๋ช ์ฃผ๊ธฐ ๊ธฐ๋ฅ ๋ฑ์ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ธฐ๋ฅํด๋์ค ์ปดํฌ๋ํธ์ ๊ธฐ๋ฅ์ ํจ์ ์ปดํฌ๋ํธ์์๋ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค.๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ ์ผ๋ก๋ @useState@, @useEffect@, @useContext@ ๋ฑ์ด ์๋ค.๊ฐ๊ฐ์ ํ ์ ํ์ฉํ๋ฉด ํจ์ ์ปดํฌ๋ํธ์์ ์ํ ๊ด๋ฆฌ, ๋ถ์ ํจ๊ณผ ์ฒ๋ฆฌ, ์ ์ญ์ ์ธ ๋ฐ์ดํฐ ๊ณต์ ๋ฑ์ ํธ๋ฆฌํ๊ฒ ํ ์ ์๋ค.์ด ์ธ์๋ ๋ง์ ๋ค์ํ ํ ์ด ์์ผ๋ฉฐ, ์ง์ ์ปค์คํ ํ ์ ๋ง๋ค์ด ์ฌ์ฉํ ์๋ ์๋ค.ํ ์ ์ฌ์ฉํ๋ฉด ํจ์ ์ปดํฌ๋ํธ์์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ , ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๋ฅผ ์ด์ฉํ ์ ์์ด ํจ์ฌ ๊ฐ๊ฒฐํ๊ณ ์ ์ฐํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ๋๋ค. ์ข ๋ฅ..
2023.12.13 -
- [React.js] React Developer Tools
React Developer Tools ๋ค์ด๊ฐ๋ฉฐ React Developer Tools ํ์ฅ ํ๋ก๊ทธ๋จ์ ๋ํด ์์๋ณด์. React Developer Tools ๊ฐ๋ React ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ๋์์ด ๋๋ ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ํ์ฅ ํ๋ก๊ทธ๋จ ์ด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด React ์ฑ์ ์ปดํฌ๋ํธ ๊ตฌ์กฐ, ์ํ, ์์ฑ ๋ฑ์ ๋ ์ฝ๊ฒ ์ดํดํ๊ณ ๋๋ฒ๊น ํ ์ ์๋ค. ์ค์น React Developer Tools๋ฅผ ์ค์นํ๋ฉด ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ์ "๊ฐ๋ฐ์ ๋๊ตฌ" ์น์ ์์ React ํญ์ด ์ถ๊ฐ๋๋ค. React Developer Tools Adds React debugging tools to the Chrome Developer Tools. Created from revision 993c4d003 on 12/5/2023. chrome.g..
2023.12.13 -
- [React.js] ๋ฆฌ์กํธ(React.js) ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ (Windows)
๋ฆฌ์กํธ(React.js) ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ (Windows) ๋ค์ด๊ฐ๋ฉฐ ์๋์ฐ(Windows)์์ ๋ฆฌ์กํธ(React.js) ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํด๋ณด์. ๋ฐฉ๋ฒ โ Node.js ์ค์นํ๊ธฐ Node.js ํ๋ก๊ทธ๋จ์ ์ปดํจํฐ์ ์ค์นํด์ค๋ค. Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org โก ๋น์ฃผ์ผ ์คํ๋์ค ์ฝ๋(VS Code) ์ค์น ๋ฐ ํ์ฅ ํ๋ก๊ทธ๋จ ์ค์น ๋น์ฃผ์ผ ์คํ๋์ค ์ฝ๋(VS Code)๋ฅผ ์ค์นํ๊ณ , VS Code์ ์๋์ ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ค์นํ๋ค. Babel JavaScript vscode-icons JS JSX Snippets โข ๋ฆฌ์กํธ ์ฑ ์์ฑํ๊ธฐ @my-app@ ์ด๋ผ๋ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ค๋ฉด ..
2023.11.27 -
- [React.js] ๋ฆฌ์กํธ(React)์์ HTML ์์์ ํด๋์ค๋ฅผ ์ง์ ํ ๋ class๊ฐ ์๋ className์ ์ฌ์ฉํ๋ ์ด์ ?
๋ฆฌ์กํธ(React)์์ HTML ์์์ ํด๋์ค๋ฅผ ์ง์ ํ ๋ class๊ฐ ์๋ className์ ์ฌ์ฉํ๋ ์ด์ ? ๋ค์ด๊ฐ๋ฉฐ ๋ฆฌ์กํธ(React)์์ HTML ์์์ ํด๋์ค๋ฅผ ์ง์ ํ ๋ @class@๊ฐ ์๋ @className@์ ์ง์ ํ๋ ์ด์ ๋ฅผ ์์๋ณด์. ์ด์ ๋ฆฌ์กํธ(React)์์ HTML ์์์ ํด๋์ค๋ฅผ ์ง์ ํ ๋, ๋ค์๊ณผ ๊ฐ์ด @class@๊ฐ ์๋ @className@์ ์ง์ ํ๋ค. ๊ทธ ์ด์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ(JavaScript)์์ ์ถฉ๋์ ํผํ๊ธฐ ์ํด์์ด๋ค. ๋ฆฌ์กํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ JSX๋ฅผ ์ฌ์ฉํ์ฌ UI๋ฅผ ์์ฑํ๋ค. JSX๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ฅ ๋ฌธ๋ฒ์ด๋ค. JSX๋ HTML๊ณผ ์ ์ฌํ๊ฒ ๋ณด์ด์ง๋ง, ์๋ฐ์คํฌ๋ฆฝํธ์ ์ผ๋ถ์ด๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์๋ @class@๋ผ๋ ํค์๋(Keyword)๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฆฌ์กํธ์์ HTM..
1 2023.11.26