React에서 삭제된 li 태그가 setState에서 삭제될 때 힘든 일
3866 단어 React
하고 싶은 일
li로people에 배열된 사람들을 표시합니다.
삭제 버튼을 누르면 프론트에서 삭제합니다
(참고로 서버 쪽은 GraphQL입니다. 이번에는 특별한 관계가 없어서 사랑을 끊었습니다.)
people은 이렇게 정의합니다.const [people, setPeople] = useState<string[]>([]);
return (
<>
<ul>
{people.map(person => (
<li onClick={handleDelete}>{person}</li>
)
)}
</ul>
</>
);
상당히 간략하게 썼다.얼마예요?
맵으로 목록에person을 표시합니다.
그리고person을 누르면handleDelete를 호출하여 서버 측의 데이터를 삭제합니다
아마 프론트에서 사라질 거예요.
어셈블리를 그릴 때
GraphQL 연결 시작 후 가져온 배열
setPeople(pickUpPeople)처럼 토닥토닥
이 갈고리는 처음 그려졌을 때 한 번만 불렸다.
서버에서 데이터가 사라졌지만
무대 위에는 아무런 변화가 없다.
(물론 F5로 업데이트하면 사라진다)
실패 예
'내가 삭제 버튼을 눌렀을 때
스토리지에서 setPeople을 필터링하면 됩니다!"
구체적으로 말하면setPeople(pickedUpPeople.filter(person => person !== デリートしたpersonのid))
한 마디로 하면people에서 삭제한 id에 맞지 않는 녀석만 골라 설정합니다.
뜻.
결과
"테스트 데이터 2개/1개 삭제/사라졌다!!!"
"그래, 하나 더 지웠어...!? 아까 지운 거 돌아왔어..."
"연타를 해보세요...번갈아 없애야 할 데이터가 갑자기 나타났어요."
왜?
연결된 pickedUpPeople 배열에서 데이터가 사라지지 않음
클릭한 놈 이외의 것을 표시합니다
그러니까 다른 건 삭제하면 사라지지만 앞에 있는 놈은 회복된다는 거지
성공 사례
delete에 눌린 id는 상태 관리로 거기에 추가하면 됩니다!
그래서 방금 코드는 이렇습니다.
* ...deletedList는 배열된 내용을 분리해서 배열한다는 뜻이에요.const[deletedList, setDeletedList] = useState<string[]>([])
setPeople(
pickedUpPeople.filter(
person =>
![デリートしたpersonのID, ...deletedList].includes(person.id),
),
);
setDeletedList([デリートしたpersonのID, ...deletedList]);
이렇게 하면 한 번에 삭제된 id가 끊임없이 목록에 추가됩니다
전체 및 삭제된 List 의 XOR 검색
사라지지 않은 녀석들만 볼 수 있어!
더 똑똑한 방법이 있죠.
원래의 코드를 파괴하지 않으면 이렇게 된다.
총결산
・ React에서 li를 처리할 때 filter를 잘 사용합니다.
・ 기타 상태로 유지하는 것이 편리한 데이터 목록
Reference
이 문제에 관하여(React에서 삭제된 li 태그가 setState에서 삭제될 때 힘든 일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/TokaiSontyo/items/854a0dafb70b5e26be28
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
return (
<>
<ul>
{people.map(person => (
<li onClick={handleDelete}>{person}</li>
)
)}
</ul>
</>
);
'내가 삭제 버튼을 눌렀을 때
스토리지에서 setPeople을 필터링하면 됩니다!"
구체적으로 말하면
setPeople(pickedUpPeople.filter(person => person !== デリートしたpersonのid))
한 마디로 하면people에서 삭제한 id에 맞지 않는 녀석만 골라 설정합니다.뜻.
결과
"테스트 데이터 2개/1개 삭제/사라졌다!!!"
"그래, 하나 더 지웠어...!? 아까 지운 거 돌아왔어..."
"연타를 해보세요...번갈아 없애야 할 데이터가 갑자기 나타났어요."
왜?
연결된 pickedUpPeople 배열에서 데이터가 사라지지 않음
클릭한 놈 이외의 것을 표시합니다
그러니까 다른 건 삭제하면 사라지지만 앞에 있는 놈은 회복된다는 거지
성공 사례
delete에 눌린 id는 상태 관리로 거기에 추가하면 됩니다!
그래서 방금 코드는 이렇습니다.
* ...deletedList는 배열된 내용을 분리해서 배열한다는 뜻이에요.const[deletedList, setDeletedList] = useState<string[]>([])
setPeople(
pickedUpPeople.filter(
person =>
![デリートしたpersonのID, ...deletedList].includes(person.id),
),
);
setDeletedList([デリートしたpersonのID, ...deletedList]);
이렇게 하면 한 번에 삭제된 id가 끊임없이 목록에 추가됩니다
전체 및 삭제된 List 의 XOR 검색
사라지지 않은 녀석들만 볼 수 있어!
더 똑똑한 방법이 있죠.
원래의 코드를 파괴하지 않으면 이렇게 된다.
총결산
・ React에서 li를 처리할 때 filter를 잘 사용합니다.
・ 기타 상태로 유지하는 것이 편리한 데이터 목록
Reference
이 문제에 관하여(React에서 삭제된 li 태그가 setState에서 삭제될 때 힘든 일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/TokaiSontyo/items/854a0dafb70b5e26be28
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const[deletedList, setDeletedList] = useState<string[]>([])
setPeople(
pickedUpPeople.filter(
person =>
![デリートしたpersonのID, ...deletedList].includes(person.id),
),
);
setDeletedList([デリートしたpersonのID, ...deletedList]);
・ React에서 li를 처리할 때 filter를 잘 사용합니다.
・ 기타 상태로 유지하는 것이 편리한 데이터 목록
Reference
이 문제에 관하여(React에서 삭제된 li 태그가 setState에서 삭제될 때 힘든 일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TokaiSontyo/items/854a0dafb70b5e26be28텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)