인프런 커뮤니티 질문&답변
[getFriends,getAgeLimit] 질문 있습니다!
작성
·
148
0
selector.js 부분에서
//reselect 함수 사용
export const getFriendsWithAgeLimit = createSelector(
[getFriends, getAgeLimit],
//선택자 함수
//위에서 반환하는 값(getFriends,getAgeLimit) 을 받아서 작성
//해당 함수는 friends 와 ageLimit이 변경되지 않았더라면 filter를 사용하지 않고 이전의 연산 값을 재사용.
(friends, ageLimit) => {
console.log("getFriendsWithAgeLimit called ")
console.log(friends, ageLimit);
return friends.filter(item => item.age <= ageLimit)
}
);
1.createSelector의 첫 번째 인자로 [getFriends, getAgeLimit]은 단순히 변수로 사용하는 역할만 하는건가요? 첫 번째 인자가 어떤 역할을 하는지 이해가 잘 안갑니다 ㅠㅠ
2.(friends, ageLimit) 의 인자값은 위에서 getFriends와 getAgeLimit을 뜻하는건가요 ?!
답변 1
1
이재승
지식공유자
안녕하세요
createSelector 에는 여러 개의 매개변수를 입력할 수 있고 마지막에 입력하는 함수는 특별한 역할을 합니다
* 마지막 함수가 반환한 값이 실제로 사용될 값입니다
* 마지막 함수 이전에 작성한 함수들이 반환하는 값은 (순서대로) 마지막 함수의 매개변수로 들어옵니다
* 편의를 위해 위 코드와 같이 배열을 입력할 수 있습니다. 이때는 배열에 있는 함수들이 실행된 후에 반환하는 값이 순서대로 마지막 함수의 매개변수로 들어옵니다.
* getFriendsWithAgeLimit 함수가 여러 번 실행되는 과정에서, 마지막 함수의 모든 매개변수가 변하지 않았을 때는 마지막 함수가 실행되지 않고 캐싱된 값(마지막 함수가 직전에 반환한 값)이 사용됩니다




