import React from'react';constRefSampleHooks=()=>{const id =useRef(1);constsetId=(n)=>{ id.current = n;};constprintId=()=>{ console.log(id.current);};return<div>refsample</div>;};exportdefault RefSampleHooks;
import{ useCallback, useMemo, useState, useRef }from'react';constgetAverage=(numbers)=>{ console.log('평균값 계산 중...');if(numbers.length ===0)return0;const sum = numbers.reduce((a, b)=> a + b);// 전부 더한 값을 구함return sum / numbers.length;// numbers 요소의 갯수로 나눔};constAverage=()=>{const[list, setList]=useState([]);const[number, setNumber]=useState('');const inputEl =useRef(null);const onChange =useCallback((e)=>{// 컴포넌트가 처음 랜더링될 때만 함수 생성setNumber(e.target.value);},[]);const onInsert =useCallback(()=>{// number 혹은 list가 바뀌었을 때만 함수 생성const nextList = list.concat(parseInt(number));// 숫자로 변환하여 리스트에 반영 console.log(nextList);setList(nextList);setNumber(''); inputEl.current.focus();// useRef를 사용하여 input 창에 focus를 함},[number, list]);const avg =useMemo(()=>getAverage(list),[list]);return(<div><inputvalue={number}onChange={onChange}ref={inputEl}/>{/* ref를 useRef를 사용하여 focus를 가져옴 */}<buttononClick={onInsert}>등록</button><ul>{list.map((value, index)=>(<likey={index}>{value}</li>))}</ul><div><b>평균값:</b>{avg}</div></div>);};exportdefault Average;