๊ด€๋ฆฌ ๋ฉ”๋‰ด

Tech is created to fix problem

[ํ”„๋กœ์ ํŠธ] Wiki ํ”„๋กœ์ ํŠธ ๋ฆฌํŒฉํ† ๋ง ๋ฆฌ๋ทฐ ๋ณธ๋ฌธ

React.js

[ํ”„๋กœ์ ํŠธ] Wiki ํ”„๋กœ์ ํŠธ ๋ฆฌํŒฉํ† ๋ง ๋ฆฌ๋ทฐ

furaha 2023. 11. 5. 16:14
๋ฐ˜์‘ํ˜•

๐Ÿ—ผ๋ฆฌํŒฉํ† ๋ง ๋ฆฌ๋ทฐ1

"index.html <head> ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜์ž"

 

index.html

<noscript>You need to enable JavaScript to run this app.</noscript>

 

์ด ํƒœ๊ทธ์˜ ์˜๋ฏธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š์•„์„œ ํ™œ์„ฑํ™”ํ•˜๋ผ๊ณ  ์•ˆ๋‚ดํ•˜๋Š” ํƒœ๊ทธ์ด๋‹ค.

React์—์„œ๋„ index.html์—์„œ ํ•ด์•ผํ•  ์ผ๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ™œ์„ฑํ™”๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋ฉฐ

๋ณดํ†ต ํ•ด์•ผํ•  ์ผ๋“ค์€ google analytics ์™€ ๊ฐ™์ด ๋ถ„์„ํ•  ๋•Œ๋„ index.html ์— ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

 

ํ˜น์€ ํŠน์ • ํŽ˜์ด์ง€๋‚˜ ์ปดํฌ๋„ŒํŠธ์—์„œ๋งŒ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•  ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด?

React Helmet์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

React Helmet์€ <head> ์ •๋ณด๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์—์„œ <head> ์ •๋ณด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ—ผ๋ฆฌํŒฉํ† ๋ง ๋ฆฌ๋ทฐ2

"useState์— ํƒ€์ž…์ง€์ • ์Šต๊ด€ํ™”"

 

const [displaySidebar, setDisplaySidebar] = useState(false);

 

--> const [displaySidebar, setDisplaySidebar] = useState<boolean>(false);

 

์ƒํƒœ ๊ด€๋ฆฌํ•  ๋•Œ, ์ดˆ๊ธฐ ์ƒํƒœ์˜ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์„ ์Šต๊ด€ํ™”ํ•˜์ž.


๐Ÿ—ผ๋ฆฌํŒฉํ† ๋ง ๋ฆฌ๋ทฐ3

"๋ณด์•ˆ ํ˜น์€ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด url ๊ด€๋ฆฌ๋Š” ๋”ฐ๋กœ ํ•˜์ž"

 

a๋งํฌ์— ์™ธ๋ถ€ ๋งํฌ๋‚˜ ํ˜น์€ img src์— ์™ธ๋ถ€ ๋งํฌ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ, ํ™˜๊ฒฝ๋ณ€์ˆ˜๋‚˜ ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋ณด์•ˆ์ด๋‚˜ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์— ์ข‹๋‹ค.

ํ˜น์€ a ๋งํฌ rel์— noopener ๊ณผ noreferrer ์†์„ฑ์„ ๋„ฃ์–ด์ค€๋‹ค๋ฉด, ๋งํฌ๊ฐ€ ์ƒˆ ์ฐฝ์œผ๋กœ ์—ด๋ฆฌ๋˜ ์›๋ž˜ ํŽ˜์ด์ง€๋กœ ๋Œ์•„์˜ฌ ์ˆ˜ ์—†๊ฒŒ ํ•˜๋˜์ง€ ์ƒˆ ์ฐฝ์— ๊ธฐ์กด ํŽ˜์ด์ง€์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐ€์ง€ ๋ชปํ•˜๋„๋ก ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด์ฃผ๋ฉด ๋ณด์•ˆ์ ์ธ ์ธก๋ฉด์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ—ผ๋ฆฌํŒฉํ† ๋ง ๋ฆฌ๋ทฐ4

"async/await ๋Š” try catch๋ฌธ ์‚ฌ์šฉ์œผ๋กœ ์—๋Ÿฌ ํ•ธ๋“ค๋ง์ด ํ•„์ˆ˜์ด๋‹ค"


๐Ÿ—ผ๋ฆฌํŒฉํ† ๋ง ๋ฆฌ๋ทฐ5

"useMemo๋กœ ์„ฑ๋Šฅ์„ ์ƒํ–ฅ์‹œํ‚ค์ž"

 

Before)

  if (location.pathname.startsWith("/employee/team")) {
    selectedKey = "team";
  } else {
    selectedKey = "member";
  }

 

After)

const selectedKey = useMemo(() => {
  return location.pathname.startsWith("/employee/team") ? "team" : "member";
}, [location.pathname]);

 

 

Before)

const selectList = ['๊ณต๋ถ€๊ฟ€ํŒ', '์ด๋ฒคํŠธ', '์œ ๋จธ'];

 

After)

const selectList = useMemo (() => ['๊ณต๋ถ€๊ฟ€ํŒ', '์ด๋ฒคํŠธ', '์œ ๋จธ'],[])

๐Ÿ—ผ๋ฆฌํŒฉํ† ๋ง ๋ฆฌ๋ทฐ6

"ํ•œ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ๋„ ์Šคํƒ€์ผ, ์ƒํƒœ ์„ ์–ธ, ํ•จ์ˆ˜, ํ›…๊ด€๋ จ ๊ทธ๋ฃนํ™” ํ•ด์ฃผ์ž"


๐Ÿ—ผ๋ฆฌํŒฉํ† ๋ง ๋ฆฌ๋ทฐ7

"React.FC์˜ ์‚ฌ์šฉ์€ ๊ฐœ์ทจ"

 

Before)

const Slide: React.FC<ISlideProps> = ({ backgroundColor, text, imageSrc, link }) => {

 

After)

const Slide = ({ backgroundColor, text, imageSrc, link }: ISlideProps) => {

๐Ÿ—ผ๋ฆฌํŒฉํ† ๋ง ๋ฆฌ๋ทฐ8

key๋Š” index๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค
key={work-time-data-${index}} ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ณ ์œ ํ•œ ๋ฌธ์ž์—ด ๊ฐ’์œผ๋กœ ๋งŒ๋“ค๋„๋ก ๊ถŒ์žฅ

์–ด๋–ค ํŽ˜์ด์ง€์—์„œ๋“  ๊ฒน์น  ์ผ์ด ์—†๊ฒŒํ•˜๊ธฐ ์œ„ํ•ด์„œ!!!


๐Ÿ—ผ๋ฆฌํŒฉํ† ๋ง ๋ฆฌ๋ทฐ9

์ƒ์ˆ˜ ๋ณ„๋„ ๊ด€๋ฆฌ ์—„์ฒญ ์ถ”์ฒœ,,,,

๊ทธ๋ƒฅ string ๋„ ์•„๋‹ˆ๊ณ  "category1 | category2 | category3" ์ด๋Ÿฐ์‹์œผ๋กœ

๋˜ํ•œ useEffect ํ•จ์ˆ˜๋„ ์ต๋ช…ํ•จ์ˆ˜๋ณด๋‹ค ์ด๋ฆ„์„ ๋ถ™์—ฌ์ฃผ๋Š” ๊ฒƒ๋„ ์ถ”์ฒœ

 

Before)

useEffect(() => {
    setLike(Number(likeData));
    setCommentList(commentsListData);
  }, []);

 

After)

์ด๋Ÿฐ ๊ฒฝ์šฐ useEffect๊ฐ€ ๋ฌด์Šจ ์—ญํ• ์„ ํ•˜๋Š”์ง€ ํ•จ์ˆ˜๋ช…์„ ์ ์–ด์ค˜๋„ ๊ฐ€๋…์„ฑ์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

useEffect(function setDefaultValueOnMount () {
// ..

}, [ ])

๐Ÿ—ผ๋ฆฌํŒฉํ† ๋ง ๋ฆฌ๋ทฐ10

"ํƒ€์ž…์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๋Š” type ๋ช…์‹œ"

 

import type {MyType} from "./myModule";


๐Ÿ—ผ๋ฆฌํŒฉํ† ๋ง ๋ฆฌ๋ทฐ11

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ ํƒ ์ด์œ .....๋ฆฌ๋“œ๋ฏธ์— ์ ์œผ๋ฉด ์ข‹์Œ


๐Ÿ—ผ๋ฆฌํŒฉํ† ๋ง ๋ฆฌ๋ทฐ12

import ํ•  ๋•Œ, ๋”ฅํ•œ ์ƒ๋Œ€๊ฒฝ๋กœ๋ฅผ ํ”ผํ•˜๋ ค๋ฉด path alias ์‚ฌ์šฉ ์ถ”์ฒœ

 

์ฐธ๊ณ ๋งํฌ

 

 

๋‹ค์Œ ํ”„์ ์—๋Š” ๊ผญ ์ƒ๊ฐํ•˜๋ฉด์„œ

์ด์œ ๊ฐ€ ์žˆ๋Š” ์ฝ”๋”ฉ์„ ํ•˜์ž,,,

๋ฐ˜์‘ํ˜•