짧지만 직접 짠 코드입니다.
사용하신다면 좋아요 댓글 부탁드려요. 헤헤
<Button onClick={
() => myArray.indexOf('elemA')>-1 ? setMyArray(myArray.filter((item)=>item!='elemA')) : setMyArray([...myArray, 'elemA'])
}>
토글버튼
</Button>
설명:
REACT의 배열은 Push, Pop 등 변화를 주는 Method는 일체 사용 불가. (불변성의 법칙)
다행히도 indexOf 와 같이 조회하는 용도의 함수는 사용이 가능하다.
따라서 원소의 추가와 삭제는 기존 배열에 변화를 주지 못하고, 새로운 배열을 만들어서 대입해야한다.
원소 삭제:
myArray.filter((item) => item!='elemA')
배열에 filter를 돌려서 'elemA'이 없는 배열을 새로 만들어 기존 배열에 바꿔치기 하는 방법이다.
즉, 원래 배열에 변화를 주는게 아니라, 새로운 배열을 만든 것.
원소 추가:
[ ...myArray, 'elemA' ]
새로운 빈 배열을 만들고, 기존 배열을 넣어준 후, 거기에 'elemA'를 추가해서 완성시킨다.
반응형
'개발 > javascript' 카테고리의 다른 글
let const var 사용 수칙 (0) | 2022.08.17 |
---|---|
Node.js 에서 Bash Script 출력(stdout, stderr) 문자열로 읽기 + 한글(EUC-KR) 인코딩 (0) | 2022.08.05 |
React useState() Object 내부 값 변경 (0) | 2021.07.05 |
[Javascript] 당신의 머리를 터지게 만들 Instanceof (0) | 2020.12.17 |
[Javascript] instance of, arguments, callee, this, new (0) | 2020.12.16 |