ref๋ก HTML ์๋ฆฌ๋จผํธ์ ์ ๊ทผ/์ ์ดํ๊ธฐ
๐ผ ์ถ๋ฐ์ ์ด ์ ๋์์ผ๋..
Input ์ปดํฌ๋ํธ ๋ด์์ value
๋ฅผ props.value
๊ฐ๊ณผ onChange
๋ฅผ ํตํด ๊ด๋ฆฌํ๋ค ๋ณด๋, ์คํฌ๋ฆฝํธ๋ก inputRef.current.value
๋ณ๊ฒฝํ๋ ๊ฒ์ผ๋ก๋ change
์ด๋ฒคํธ๊ฐ ํธ๋ฆฌ๊ฑฐ ๋์ง ์์๋ค. ๐ฅ
inputRef dispatchevent change
bubbles
์ ๊ธฐ๋ณธ๊ฐ์ false
์ด๊ธฐ ๋๋ฌธ์, ์์์ ๋ฐ์ ํธ๋ค๋ฌ๊ฐ change
์ด๋ฒคํธ๋ฅผ ์์ ํ์ง ๋ชปํฉ๋๋ค.๐ผ ๊ทธ๋ฌ๋ ๋์ ๊ฒฝ์ฐ์๋ dispatchevent
์ธ์๋ก change
์ด๋ฒคํธ๋ก๋ ์ํ๋๋๋ก ๋์ํ์ง ์์๊ณ input
์ด๋ฒคํธ๋ฅผ ์ถ๊ฐํด์ ์ฌ์ฉํด์ผ ๋น๋ก์ ๋์ํ๋ค. ๐ฅ
react dispatchevent change not working
How do I programmatically trigger an โinputโ event without jQuery?
๐ ํจ๊ป ์ฝ์๊ฑฐ๋ฆฌ
EventTarget
์ธํฐํ์ด์ค์dispatchEvent()
๋ฉ์๋๋EventTarget
๊ฐ์ฒด๋กEvent
๋ฅผ ๋ฐ์กํด์, ํด๋น ์ด๋ฒคํธ์ ๋ํด ๋ฑ๋ก๋EventListener
๋ค์ (๋๊ธฐ์ ์ผ๋ก) ์์๋๋ก ํธ์ถํฉ๋๋ค.
์ด๋ฒคํธ blur ์ ์ ํด๋ฆญ
const clearInput = (e) => {
const ev = new Event('input', { bubbles: true });
inputRef.current.value = '';
inputRef.current.dispatchEvent(ev);
};
const handleMouseDown = (e) => e.preventDefault();
<Button
onClick={clearInput}
onMouseDown={handleMouseDown}
/>