const value = useMemo(()=> function(v1, v2), [v1, v2])
첫번째 매개변수로 함수, useMemo가 반환값을 기억한다.
배열의 값이 변경되지 않으면 기억한 반환값을 재사용
//자식 컴포넌트에 함수와 props를 내려줄 경우
const [name, setName] = useState('')
const [age, setAge] = useState(0)
...
<UserEdit
onSave={()=> saveToSever(name, age)}
... />
// useCallback 사용
const onSave = useCallback(()=> saveTosever(name, age), [name, age])
...
<UseEdit
onSave={onSave}
... />
useMemo가 함수의 리턴을 저장한다면 useCallback은 함수를 저장, 마찬가지로 배열의 값이 변경되지 않는다면 그대로 사용.