TIL(Today I Learned)/2021년

11.30 - Currying으로 onClick handler 함수 깔끔하게 작성하기

심리밀당남 2021. 11. 30. 13:05

1. Currying으로 onClick handler 함수 깔끔하게 작성하기

Currying이란, 여러개의 인자를 받는 함수를, 하나의 인자만 받는 함수의 연속으로 바꾸는 것
// Original function
function multiply(x,y,z) {
  return x * y * z
}
console.log(multiply(1,2,3))

// Curried version
function multiply(x) {
    return (y) => {
        return (z) => {
            return x * y * z
        }
    }
}
console.log(multiply(1)(2)(3))

In React

import * as React from "react";

const TestComponent: React.FunctionComponent = (props) => {
  const myList: any[] = [];

  const onClickItem = (item: any) => {
    console.log("Item: ", item);
  };
  
  const curriedOnClickItem = (item: any) => () => {
    console.log("Item: ", item);
  }

  return (
    <div>
      {myList.map((item) => (
        <div>
          <button onClick={() => onClickItem(item)}>My Button</button>
          <button onClick={curriedOnClickItem(item)}>My Button</button>
        </div>
      ))}
    </div>
  );
};

export default TestComponent;