์ผ์ƒ/Today I Learned

[๋ฐ๋ธŒ์ฝ”์Šค Day 48] 2022.12.21

YJzero 2022. 12. 21. 20:27

๐Ÿ“–์˜ค๋Š˜ ๋ฐฐ์šด  ๊ฒƒ

new Image

: ์ƒˆ๋กœ์šด HTMLImageElement ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ ๋‹ค.

document.createElement('img')์™€ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•œ๋‹ค.

 

์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ

  • onAbort: ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ์ง€ ๋กœ๋”ฉ์„ ์ค‘๊ฐ„์— ๋ฉˆ์ถœ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ
  • onError: ์ด๋ฏธ์ง€ ๋กœ๋”ฉ ์ค‘ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ
  • onLoad: ์ด๋ฏธ์ง€๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋กœ๋”ฉ๋˜์—ˆ์„ ๋•Œ
 const [loaded, setLoaded] = useState(false);

  useEffect(() => {
    const image = new Image();
    image.src = src;
    image.onload = () => setLoaded(true);
  }, [src]);

 

 

Array.from

:์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด๋‚˜ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ์–•๊ฒŒ ๋ณต์‚ฌํ•ด ์ƒˆ๋กœ์šด Array ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค. 

Array.from(Array(line), (_, index) =>
       ...
      )

์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜ - ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ ์ž ํ•˜๋Š” ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด๋‚˜ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด

๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜ - ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ์— ๋Œ€ํ•ด ํ˜ธ์ถœํ•  ๋งตํ•‘ ํ•จ์ˆ˜

(์–ธ๋”์Šค์ฝ”์–ด(_) ๋ถˆํ•„์š”ํ•œ ์ธ์ž์˜ ๊ณต๊ฐ„์„ ์ฑ„์šฐ๊ธฐ ์œ„ํ•œ ์šฉ๋„)

 

 

 

<select> <options> ํƒœ๊ทธ hidden ์†์„ฑ

์ฝค๋ณด๋ฐ•์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด select, option ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ด๋•Œ placeholder๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ hidden์„ ์„ค์ •ํ•˜๊ณ  ๋ชฉ๋ก์— ๋งจ ์•ž์— ๋‘๋ฉด placeholder์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋ชฉ๋ก์—๋Š” ๋ณด์ด์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. 

  if (placeholder) {
    options.unshift(
      <option key="placeholder" value="" hidden>
        {placeholder}
      </option>
    );
  }

 

 

React.children

this.props.children์„ ๋‹ค๋ฃจ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.

 

React.Children.map

React.Children.map(children, function[(thisArg)])

 

 

React.Children.forEach

React.Children.forEach(children, function[(thisArg)])

 

React.Children.count

React.Children.count(children)

Children์— ํฌํ•จ๋œ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

 

 

React.Children.only

React.Children.only(children)

Children์ด ๋‹จ ํ•˜๋‚˜์˜ ์ž์‹์„ ๊ฐ–๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ํ•ด๋‹น ์ž์‹ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋ฐ˜ํ™˜

 

React.Children.toArray

React.Children.toArray(children)

๊ฐ ์ž์‹์— key๊ฐ€ ํ• ๋‹น๋œ 1์ฐจ์› ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

React.isValidElement

React.isValidElement(object)

๊ฐ์ฒด๊ฐ€ React ์—˜๋ฆฌ๋จผํŠธ์ธ์ง€ ํ™•์ธ. true ํ˜น์€ false๋ฅผ ๋ฐ˜ํ™˜

 

 

 

React.cloneElement

React.cloneElement(
  element,
  [config],
  [...children]
)

์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ์ƒˆ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋ณต์ œํ•˜๊ณ  ๋ฐ˜ํ™˜

[config]: ์›๋ณธ ์—˜๋ฆฌ๋จผํŠธ์— ๋”ํ•ด์„œ ๋ณต์ œ๋œ ์—˜๋ฆฌ๋จผํŠธ์— ์ถ”๊ฐ€๋  props

[...children]: ๋ณต์ œ๋œ ๊ฐ์ฒด์˜ children

 

  • ์›๋ž˜ ์—˜๋ฆฌ๋จผํŠธ์˜ props์™€ ์ƒˆ props๊ฐ€ ์–•๊ฒŒ ๋ณ‘ํ•ฉ๋œ๋‹ค.
  • ์ƒˆ child๊ฐ€ ๊ธฐ์กด child๋ฅผ ๋Œ€์ฒดํ•œ๋‹ค.
  • ์›๋ž˜ ์—˜๋ฆฌ๋จผํŠธ์˜ key์™€ ref๊ฐ€ ์œ ์ง€๋œ๋‹ค. 

 

ํ•˜์œ„ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์œ ์šฉํ•˜๋‹ค!

 

 

 

๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ

  • mousedown: ํ•ด๋‹น element์—์„œ ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ๋ฐœ์ƒ
  • mousemove: ํ•ด๋‹น element์—์„œ ๋งˆ์šฐ์Šค๋ฅผ ์›€์ง์˜€์„ ๋•Œ ๋ฐœ์ƒ
  • mouseup: ํ•ด๋‹น element์—์„œ ๋ˆŒ๋ €๋˜ ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์„ ๋•” ๋•Œ ๋ฐœ์ƒ

 

๐Ÿ’ญ๋ฐฐ์šด ์ 

React์˜ ์ตœ์ƒ์œ„ API๋ฅผ ์จ๋ณธ ์ ์ด ๊ฑฐ์˜ ์—†์—ˆ๋Š”๋ฐ ์ด๋ฒˆ ๊ธฐํšŒ์— ์กด์žฌ๋ฅผ ์•Œ๊ฒŒ ๋˜๊ณ  ์‚ฌ์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค. ๊ณต์‹๋ฌธ์„œ ๋ณด๋Š” ์—ฐ์Šต๋„ ํ•  ๊ฒธ ๊ณต์‹๋ฌธ์„œ ๋ณด๋ฉด์„œ ํ•ด๋‹น ๋‚ด์šฉ์— ๋Œ€ํ•ด ๋” ๊ณต๋ถ€ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค.