π¨π» web.dev/fe25 React μ΄λ²€νΈ μ²λ¦¬λ°©μκ³Ό SyntheticEvent React λ W3C λͺ μΈμ λ°λΌ ν©μ± μ΄λ²€νΈλ₯Ό μ μνκΈ° λλ¬Έμ λΈλΌμ°μ νΈνμ±μ λν΄ κ±±μ ν νμκ° μμ΅λλ€. ν©μ± μ΄λ²€νΈλ Synthetic Event κ°μ²΄λ‘ μ μλλ©° λΈλΌμ°μ κ³ μ μ΄λ²€νΈμ μμ ν λμΌνκ² λμνμ§λ μμ΅λλ€. μ΄λ² ν¬μ€νΈμμλ React μ λ΄λΆ μ΄λ²€νΈ μμ€ν μ λμ λ°©μμ λν΄μ μ΄ν΄λ³΄κ² μ΅λλ€. π π SyntheticEvent λνΌ κ°μ²΄ React μ μ΄λ²€νΈ νΈλ€λ¬λ ν¬λ‘μ€ λΈλΌμ°μ§μ μΌνμΌλ‘ λͺ¨λ νλ«νΌμμ λμΌν μ΄λ²€νΈ μ²λ¦¬λ₯Ό μν΄ κ΅¬νλ μΈν°νμ΄μ€μΈSyntheticEvent κ°μ²΄λ₯Ό μ¬μ©ν©λλ€. μ΄λ stopPropagation κ³Ό preventDefault λ±μ ν¬ν¨νμ¬ λΈλΌμ°μ κ³ μ μ΄λ²€νΈμ λμΌν μΈν°νμ΄μ€λ₯Ό κ°μ§μ§λ§ λͺ¨λ λΈλΌμ°μ μμ λμΌνκ² λμν¨μ 보μ₯ν©λλ€. S.. 2022. 10. 17. File API λ₯Ό μ΄μ©ν Input μ»΄ν¬λνΈ λ§λ€κΈ° π λ€μ΄κ°λ©° νλ‘μ νΈ λμ€ HTML Input μ λνν μ»΄ν¬λνΈλ₯Ό ν΅ν΄μ JavaScript μ File κ°μ²΄λ₯Ό λ€λ€λ³Ό κΈ°νκ° μκ²Όμ΅λλ€. File API μ λν λͺ¨λ κ²μ μ΄λ² ν¬μ€νΈμμ λ€λ£¨μ§λ μμ§λ§, νμν κΈ°λ₯μ ꡬννκΈ° μν΄μ μμλ³Έ λ΄μ©λ€μ μ 리ν΄λ³΄κ² μ΅λλ€. π File API λ? File API λ νμΌμ λν μ 보λ₯Ό μ 곡νκ³ JavaScript λ₯Ό μ΄μ©ν΄μ νμΌκ°μ²΄μ μ κ·Όν μ μλ λ€μν μΈν°νμ΄μ€λ₯Ό μ 곡ν©λλ€. μ λ‘λ ν νμΌμ μ΄λ¦μ λ³κ²½νκ³ μμ νλ μ»΄ν¬λνΈλ₯Ό λ§λ€μ΄λ³΄λ©΄μ File API μ νμ© λ°©λ²μ λν΄μ μμλ³΄κ² μ΅λλ€. λ¨Όμ νμΌμ λ€λ£¨λ FileInput μ»΄ν¬λνΈλ₯Ό λ€μκ³Ό κ°μ΄ μ μνκ² μ΅λλ€. μ¬λ¬κ°μ νμΌμ μ λ‘λ ν μ μλλ‘ νκΈ° μν΄ multiple μμ±μ μΆ.. 2022. 8. 13. Next.js API Routes μμ보기 π API Routes λ? API Routes μ λ±μ₯ λ°°κ²½ React μ ν리μΌμ΄μ μ κ°λ°νλ€λ³΄λ©΄ backend API κ° νμν μμ μ΄ μ€κ²λ©λλ€. μλ₯Ό λ€μ΄ DB μ λ°μ΄ν°λ₯Ό μ‘°ννκ±°λ μ¬μ©μκ° μμ²ν λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λ±μ μμ μ΄ μμ΅λλ€. μ΄λ₯Ό μν΄ μ΄μ μλ Node.js λ±μ νμ©ν custom server νμ΄νλΌμΈμ ꡬμΆν΄μ ν΄λΉ μμ μ μμνλ λ°©μμ μ¬μ©νμ§λ§, μ΄ κ²½μ° Next.js μ μ±λ₯ μ΅μ ν μ΄μ μ μκ² λλ λ¬Έμ μ TypeScript λ° ES6 λ°©μμ λͺ¨λ μμ€ν μ μ¬μ©νμ§ λͺ»νλ λ¬Έμ κ° μμμ΅λλ€. μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νλ©° κ°λ°μ κ²½νμ ν₯μμν€κΈ° μν΄μ Next.js λ Next 9 λ²μ λΆν° API Routes λΌλ κΈ°λ₯μ μ§μνκΈ° μμνμ΅λλ€. μ΄λ₯Ό ν΅ν΄ Next.js .. 2022. 7. 26. React μ»΄ν¬λνΈ(children) νμ΄ννκΈ° π λ¬΄μ¨ νμ μ μ¨μΌνμ§..? π€ TypeScript μ ν¨κ» React νλ‘μ νΈλ₯Ό κ°λ°νλ€λ³΄λ©΄ μ»΄ν¬λνΈμμ children μ prop μΌλ‘ λ°μμ μ¬μ©νκ³ μ΄μ λν μΈν°νμ΄μ€λ₯Ό μ ν΄μ€μΌ νλ κ²½μ°κ° μμ΅λλ€. export default function Component({ children }) { return ( μμ μ»΄ν¬λνΈλ₯Ό λ λλ§ν©λλ€. { children } ) } μ΄λ΄λλ§λ€ νμ κ³ λ―ΌμΈ λΆλΆμ΄ children μ μ΄λ€ νμ μ λͺ μν΄μΌ νλ κ²μΈκ°? μ λν κ²μ λλ€. μ΄λ² ν¬μ€νΈμμλ μ΄ λΆλΆμ λν κ³ λ―Όμ ν΄κ²°νκ³ μ! React μ»΄ν¬λνΈμ children μ ν λΉ κ°λ₯ν νμ λ€μ λν΄μ κ°λ¨νκ² μ 리ν΄λ³΄κ² μ΅λλ€. π React μμ μ 곡νλ μ¬λ¬κ°μ§ children νμ λ€ 1οΈβ£ JSX... 2022. 7. 23. React μ€λλ ν΄λ‘μ (Stale Closure) μ΄μ ν΄κ²°νκΈ° π requestAnimationFrame + React Hook νΈλ¦¬ν μ¬μ κ³Όμ μμ μ λλ©μ΄μ μ ꡬνν λ rAF(requestAnimationFrame)μ μ¬μ©νμ΅λλ€. CSS λ§μΌλ‘λ ꡬνμ΄ νλ€λ€κ³ μκ°λμ΄ μ¬μ©ν APIμΈλ° Reactμ ν¨κ» μ¬μ©νλ©° λ§μ£Όνλ μ΄μλ₯Ό μ 리νλ €κ³ ν¬μ€ν μ λ¨κΈ°κ² λμμ΅λλ€. π rAFλ₯Ό μ¬μ©ν slotMachine ꡬνλΆ μ μΉμ μμ μ¬μ©μ μ§νλ₯Ό λνλ΄λ μ«μ λΆλΆμ μ¦κ° μλκ° μ²μ²ν κ°μνλ μ λλ©μ΄μ μ ꡬννκΈ° μν΄ rAFλ₯Ό μ¬μ©νμ΅λλ€. ꡬν μ½λλ λλ΅ λ€μκ³Ό κ°μ΅λλ€. ν΄λΉ μ»΄ν¬λνΈκ° μ΅μ΄μ λ λλ§ λ λ μ λλ©μ΄μ μ μμνκΈ° μν΄ useEffectλ₯Ό μ¬μ©νμκ³ λͺ©ν μ«μμ λλ¬ν λκΉμ§ μ¬κ·μ μΌλ‘ μ λλ©μ΄μ ν¨μλ₯Ό μ€νν©λλ€. const SlotMac.. 2022. 5. 11. React μ μ΄ μ»΄ν¬λνΈ vs λΉμ μ΄ μ»΄ν¬λνΈ π λΉμ μ΄ μ»΄ν¬λνΈ (uncontrolled component) λΉμ μ΄ μ»΄ν¬λνΈ μμ νΌ λ°μ΄ν°λ DOM μ체μ μ μ₯λ©λλ€. λ§μ½ ν΄λΉ νΌ λ°μ΄ν°λ₯Ό μ½μ΄μ€κ³ μΆλ€λ©΄ ref λ₯Ό μ΄μ©ν΄μ κ°μ PULL ν΄μμ μ¬μ©ν©λλ€. import React, { useRef } from 'react' const UnControlledComponent = () => { const inputRef = useRef(null) const handleClick = () => { /** input κ°μΌλ‘ νΉμ λ‘μ§μ μνν©λλ€. */ console.log(inputRef.current.value) } return ( νμΈ ) } export default UnControlledComponent π μ μ΄ μ»΄ν¬λνΈ (controlle.. 2022. 4. 10. μ΄μ 1 2 3 4 5 λ€μ