카테고리 없음
Til (2023.02.22)
prdg
2023. 2. 24. 09:39
유저 검색 로직 트러블 슈팅
유저 검색 로직중 하나이다. 원래 두번째 for문 안의 if 뒤에 return할 부분이 들어있었는데 원하는대로 필터링이 되지 않았다. 이유는 모르겠지만 return할 부분을 for문 밖으로 아예 빼주니까 정상적으로 작동됐다. 시도해봤던 것 중에 recoil에서 selector를 사용해 결과 값을 필터 해주려고 해봤다. 첫번째 selector는 잘 작동했는데 그 selector로 만든걸 다른 selector에서 다시 사용하려할때 생기는 오류도 있었다.
const alreadyFriend = friendAllRecoil?.filter((i: FriendSearchProps) => {
for (let t = 0; t < getFriendAuth.length; t++) {
if (frendSearchInput === "") {
return false;
} else if (
getFriendAuth[t].friendId === i.id &&
getFriendAuth[t].myId === myId
) {
const lowercaseNickname = i?.nickname.toLowerCase();
const lowercaseSearchInput = frendSearchInput?.toLowerCase();
return lowercaseNickname?.includes(lowercaseSearchInput);
}
}
});
const friendSearch = friendAllRecoil?.filter((i: FriendSearchProps) => {
for (let item = 0; item < friendAdd.length; item++) {
if (i.id === friendAdd[item].myId) {
return false;
}
}
// 현재 친구상태면 안보이게
for (let t = 0; t < alreadyFriend.length; t++) {
if (alreadyFriend[t].id === i.id) {
return false;
}
}
//여기부터 return할 부분(오류났었던 부분)
//대문자 검색
const lowercaseNickname = i.nickname?.toLowerCase();
const lowercaseSearchInput = frendSearchInput?.toLowerCase();
if (i.id === myId || frendSearchInput === "") {
return false;
} else if (lowercaseNickname.includes(lowercaseSearchInput)) {
return true;
}
});
//recoil atom
export const getFriend = atom<any>({
key: "friendAddState",
default: [],
});
export const newFriendAdd = selector({
key: "newFriendAdd",
get: ({ get }) => {
const friendAddAll = get(getFriend);
const completed = friendAddAll.filter((i: any) => i.friendId === myId);
return [completed];
},
});
/* 오류 */
export const BothFriend = selector({
key: "BothFriend",
get: ({ get }) => {
const getFriendAuth = get(getFriend);
const friendAdd = get(newFriendAdd);
const completed = getFriendAuth?.filter((i: any) => {
for (let t = 0; t < friendAdd.length; t++) {
if (
friendAdd[t].friendId === i.myId &&
friendAdd[t].myId === i.friendId
) {
return i.myId === myId;
} else if (
friendAdd[t].friendId === i.myId &&
friendAdd[t].myId === i.friendId
) {
return i.myId === myId;
}
return false;
}
});
return [completed];
},
});