Javascript

고차 함수

kyoulho 2024. 7. 8. 22:00

함수형 언어에서는 함수와 변수를 차별하지 않으므로 함수는 다른 함수의 입력 매개변수나 반환값으로도 사용될 수 있습니다.

고차 함수는 다른 함수를 반환하는 함수를 의미한다.

리액트 개발에서 고차 함수는 콜백 함수에 어떤 정보를 추가로 전달하려고 할 때 주로 사용한다.

const onClick = useCallbakc((name: string) => () => alert(`${name} clicked`), [])

 

리액트에서 고차 함수를 구현하는 이유는 함수의 타입 불일치를 해결하기 위해서이다. onClick 이벤트 속성은 () => void 타입의 콜백 함수를 설정해야 하므로 다음 처럼 콜백 함수 내부에서 필요한 name 변수를 전달할 수 없다.

() => alert(`${name} clicked`)

그러나 콜백 함수를 다음처럼 고차 함수로 구현하면 onClick이 요구하는 타입 함수를 반환할 수 있으면서 동시에 함수 몸통이 요구하는 name값 또한 전달할 수 있다.

export default function HighOrderCallback() {
    const onClick = useCallback((name: string) => () => alert(`${name} clicked`), [])

    let buttons = useMemo(() =>
            makeArray(3)
                .map(randomName)
                .map((name, index) => (
                    <Button
                        key={index}
                        // onClick(name)의 반환값을 파라미터로 넘긴다
                        onClick={onClick(name)}
                        className={"btn-primary btn-wide btn-xs"}>
                        {name}
                    </Button>
                )),
        [onClick]);

    return (
        <div className={'mt-4'}>
            <Title>HighOrderCallback</Title>
            <div className={'flex justify-evenly mt-4'}>{buttons}</div>
        </div>
    )
}
728x90

'Javascript' 카테고리의 다른 글

순수 함수  (3) 2024.07.22
[JS] FileReader 클래스  (0) 2024.07.20
이중 NOT 연산자 (!!)  (0) 2024.07.02
코드 품질 도구  (0) 2024.07.01
함수 선언 vs. 함수 표현식  (0) 2024.06.29