๐Ÿ’ป My Work/๐Ÿ”ฅ React

[React/JS] useRef ์—ฌ๋Ÿฌ ๊ฐœ ํ•œ๋ฒˆ์— ์„ ์–ธํ•˜๊ธฐ(useRef ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ)

Jaeseo Kim 2022. 11. 6. 23:47

ref ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ํ•„์š”ํ•œ ์ƒํ™ฉ...

 

useRef๋ฅผ ํ†ตํ•ด input์„ ์ œ์–ดํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!

๊ทธ๋Ÿฐ๋ฐ, ์ด๋Ÿฐ input์ด 5๊ฐœ๋ผ๋ฉด? useRef์ด 5๊ฐœ ํ•„์š”ํ•˜๊ฒ ์ฃ ! 5๊ฐœ ์ •๋„๋Š”.. ํ•˜๋‚˜ํ•˜๋‚˜ ์„ ์–ธํ•ด์ค„ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ... ๋น„ํšจ์œจ์ ์ธ๋ฐ๋‹ค๊ฐ€

์‹ฌ์ง€์–ด๋Š” input์ด 1000๊ฐœ๋ผ๋ฉด?!? ํ•˜๋‚˜ํ•˜๋‚˜ ์„ ์–ธํ•ด์ค„ ์ˆ˜ ์—†๊ฒ ์ฃ ..!!๐Ÿค”๐Ÿค”๐Ÿค”

 

 

ํšจ์œจ์ ์œผ๋กœ ๊ตฌํ˜„ํ•ด๋ด…์‹œ๋‹ค!!

 

๊ฒฐ๋ก ์ ์œผ๋ก  ์•„๋ž˜์™€ ๊ฐ™์ด ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Ref๋ฅผ ๋ฐฐ์—ด๋กœ ๊ด€๋ฆฌํ•˜๊ณ ,

(item, index) =>
(
<input type="file"
  ref={(element) => { Ref๋ฐฐ์—ด.current[index] = element; }}
  onChange={(e) => Ref์ด๋ฒคํŠธํ•จ์ˆ˜(e, index)} />

)

 

 

 

 

00. ๋ฌธ์ œ..


import * as React from "react";

export default function App() {
  /** ํŒŒ์ผ์ด ์ถ”๊ฐ€๋  input์˜ ref */
  const fileInputRef01 = React.useRef();
  const fileInputRef02 = React.useRef();
  const fileInputRef03 = React.useRef();
  const fileInputRef04 = React.useRef();
  const fileInputRef05 = React.useRef();

  return (
    <div>
      <input type="file" ref={fileInputRef01} />
      <input type="file" ref={fileInputRef02} />
      <input type="file" ref={fileInputRef03} />
      <input type="file" ref={fileInputRef04} />
      <input type="file" ref={fileInputRef05} />
    </div>
  );
}

์•„... ์•„... ์ด๊ฑด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค...

 

 

 

 

01. ํ•ด๊ฒฐํ•˜๊ธฐ


import * as React from "react";

export default function App() {
  /** ํŒŒ์ผ์ด ์ถ”๊ฐ€๋  input์˜ ref๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„์„œ ๊ด€๋ฆฌํ•˜๊ธฐ */
  const imageInputRef = React.useRef([]);
  /** ex. ์ปดํฌ๋„ŒํŠธ ๋ฆฌ์ŠคํŠธ */
  const fileComponentList = [1, 2, 3, 4, 5];

  /** ๊ฐ ํŒŒ์ผ ์„ ํƒ ๋ฒ„ํŠผ ๋ˆŒ๋ €์„ ๋•Œ ref์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ */
  function onAddFileChange(event, index) {
    event.preventDefault();

    // ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ
    if (event.target.files) {
      console.log(event.target.files[0]); // ํ•ด๋‹น ํŒŒ์ผ ์ ‘๊ทผ
    }
  }

  return (
    <div>
      {fileComponentList.map((item, index) => (
        <input
          type="file"
          ref={(element) => {
            imageInputRef.current[index] = element;
          }}
          onChange={(e) => onAddFileChange(e, index)}
        />
      ))}
    </div>
  );
}

 

 

 

โœจโœจโœจ