매개변수를 사용하여 데이터를 필터링하고 그룹화하기 위해 Reselect Selectors를 사용하는 방법

제목: 매개변수와 함께 Reselect 셀렉터 사용하기 이 블로그 포스트에서는 리덕스 응용 프로그램에서 reselect 라이브러리를 사용하여 매개변수가 있는 셀렉터를 만드는 방법에 대해 알아보겠습니다. 셀렉터는 리덕스 아키텍처의 중요한 부분으로, 스토어의 상태에서 계산된 데이터를 메모이제이션되고 효율적으로 추출할 수 …

title_thumbnail(매개변수를 사용하여 데이터를 필터링하고 그룹화하기 위해 Reselect Selectors를 사용하는 방법)

제목: 매개변수와 함께 Reselect 셀렉터 사용하기

이 블로그 포스트에서는 리덕스 응용 프로그램에서 reselect 라이브러리를 사용하여 매개변수가 있는 셀렉터를 만드는 방법에 대해 알아보겠습니다. 셀렉터는 리덕스 아키텍처의 중요한 부분으로, 스토어의 상태에서 계산된 데이터를 메모이제이션되고 효율적으로 추출할 수 있도록 합니다. 그러나 reselect는 기본적으로 셀렉터에 추가 매개변수를 전달하는 기능을 지원하지 않습니다. 이런 제한을 극복하고 맞춤형 매개변수를 받을 수 있는 셀렉터를 만드는 다양한 접근법을 알아보겠습니다.

접근법 1: Reselect 4.1 업데이트하기

Reselect 4.1 이상을 사용하는 경우, 셀렉터가 추가 매개변수를 받을 수 있는 새로운 기능을 활용할 수 있습니다. createSelector 함수를 사용하여 셀렉터를 정의하고 입력 셀렉터의 배열과 선택된 값 및 추가 매개변수를 받는 함수를 전달할 수 있습니다. 아래 예시를 살펴보겠습니다:

// selector.js

const selectItemsByCategory = createSelector(
  [
    state => state.items,
    (state, category) => category
  ],
  (items, category) => items.filter(item => item.category === category)
);

// App.js에서 사용법

const items = selectItemsByCategory(state, 'javascript');

이 접근법을 통해 카테고리와 같은 맞춤형 매개변수를 셀렉터에 전달하여 해당 매개변수에 기반한 아이템을 필터링할 수 있습니다. 깔끔하고 효율적인 해결책을 제공합니다.

접근법 2: 고차 셀렉터 생성하기

Reselect의 이전 버전을 사용하거나 다른 접근법을 선호하는 경우, 맞춤형 매개변수를 받고 새로운 셀렉터를 반환하는 고차 셀렉터를 생성할 수 있습니다. 이는 셀렉터에서 매개변수를 인수로 사용하는 함수를 반환함으로써 구현할 수 있습니다. 아래 예시를 살펴보겠습니다:

// selector.js

export const selectWithValue = (customParameter) => createSelector(
  selectAllDataFiltered,
  (data) => {
    console.log(customParameter);
    return data[customParameter];
  }
);

// App.js에서 사용법

const data = selectWithValue('myValue')(myState);

이 접근법은 selectWithValue라는 고차 셀렉터를 생성하는데, 이는 맞춤형 매개변수를 받고 새로운 셀렉터를 반환합니다. 이를 통해 매개변수에 기반한 필터링된 데이터에서 값을 동적으로 추출할 수 있게 됩니다.

결론

이 블로그 포스트에서는 reselect 라이브러리에서 셀렉터에 추가 매개변수를 전달하는 제한을 극복하기 위한 다양한 접근법을 알아보았습니다. Reselect 4.1에서 소개된 새로운 기능을 사용하는 방법과 맞춤형 매개변수를 받는 함수를 반환하는 고차 셀렉터의 개념을 살펴보았습니다. 두 가지 접근법 모두 매개변수를 사용하여 유연한 셀렉터를 만들 수 있으며, Redux 응용 프로그램에서 효율적으로 계산된 데이터를 생성할 수 있게 해줍니다.

reselect 셀렉터에 매개변수를 사용해 본 경험이 있나요? 아래 댓글에서 여러분의 생각과 통찰을 공유해주세요!

참고 자료 :

https://stackoverflow.com/questions/40291084/use-reselect-selector-with-parameters

같은 카테고리의 다른 글 보기 :

reactjs

Leave a Comment