React/개념
array, object state 변경하는 법(블로그 만들기)
하로이
2022. 10. 8. 09:51
state 변경함수 동작원리
state 변경함수를 쓸 때
기존state === 신규state 이렇게 먼저 검사해봅니다.
array/object 동작원리
1. 자바스크립트는 array/object 자료를 하나 만들면
예를 들어서 let arr = [1,2,3] 이렇게 만들면
[1,2,3] 자료는 램이라는 가상공간에 몰래 저장이 되고
let arr 변수엔 그 자료가 어디있는지 가리키는 화살표만 담겨있습니다.
array, object 자료 다룰 때는 원본 데이터를 직접 조작하는 것 보다는
기존값은 보존해주는 식으로 코드짜는게 좋은관습입니다.
(왜냐면 원본 막 바꿔버렸을 때 갑자기 원본이 필요해질 수도 있기 때문입니다 : )
정리
리액트에서 array/object state를 수정하고 싶으면
독립적인 카피본을 만들어서 수정하는게 좋습니다.
[...기존state]
{...기존state}
이렇게 하면 독립적인 카피가 하나 생성됩니다.
그럼 코드로 정리하기에 들어가 보도록 하죠~~
혼자 분석해보고 모르겠으면 내려가 주세요 !
/*eslint-disable*/
import { useState } from "react";
function App() {
let post = "강남 우동 맛집";
let [글제목, 글제목변경] = useState([
"남자 코트 추천",
"강남 우동 맛집",
"파이썬 독학",
]);
let [따봉, 따봉변경] = useState(0);
return (
<div className="App">
<div className="black-nav">
<h4>ReactBlog</h4>
</div>
<button
onClick={() => {
let s = [...글제목];
s.sort();
글제목변경(s);
}}
>
가나다순정렬
</button>
<button
onClick={() => {
let copy = [...글제목];
copy[0] = "여자 코트 추천";
글제목변경(copy);
}}
>
글수정
</button>
<div className="list">
<h4>
{글제목[0]}
<span
onClick={() => {
따봉변경(따봉 + 1);
}}
>
😋
</span>{" "}
{따봉}
</h4>
<p>2월 17일 발행</p>
</div>
<div className="list">
<h4>{글제목[1]}</h4>
<p>2월 17일 발행</p>
</div>
<div className="list">
<h4>{글제목[2]}</h4>
<p>2월 17일 발행</p>
</div>
</div>
);
}
export default App;
/*eslint-disable*/
//이건 경고까지는 아니고 주의하라는 터미널에 나오는 문구를 없애주는 작업입니다.
import { useState } from "react";
// react에서 가지고 있는 useState를 불러옵니다.
function App() {
let post = "강남 우동 맛집";
//이건 보시는 그대로 post에다가 "강남 우동 맛집"을 넣어줍니다.
let [글제목, 글제목변경] = useState([
"남자 코트 추천",
"강남 우동 맛집",
"파이썬 독학",
]);
//초기값에 array안에 3개를 넣어주었습니다.
let [따봉, 따봉변경] = useState(0);
return (
<div className="App">
<div className="black-nav">
<h4>ReactBlog</h4>
</div>
<button
onClick={() => {
let s = [...글제목];
s.sort();
글제목변경(s);
}}
>
// 버튼에 onclick 이벤트를 넣어서 sort 함수로 가나다순 정렬되도록 만들어 두었습니다.
가나다순정렬
</button>
<button
onClick={() => {
let copy = [...글제목];
copy[0] = "여자 코트 추천";
글제목변경(copy);
}}
>
// 다시 onClick이벤트인데 이번에는 copy안에 원본 배열중에 0번째 "남자 코트 추천"을
"여자 코트 추천"으로 변경하도록하고 글제목 변경에다가 변경사항을 넣어줍니다.
글수정
</button>
<div className="list">
<h4>
{글제목[0]}
<span
onClick={() => {
따봉변경(따봉 + 1);
}}
>
😋
</span>{" "}
{따봉}
</h4>
//이제는 잊지 않을거 같은 onClick 이벤트 ..ㅋㅋㅋ 아시다시피 onClick 이벤트에다가 따봉을
누르면 따봉변경에 따봉+1이 실행되어 숫자가 1씩 더해집니다.
<p>2월 17일 발행</p>
</div>
<div className="list">
<h4>{글제목[1]}</h4>
<p>2월 17일 발행</p>
</div>
<div className="list">
<h4>{글제목[2]}</h4>
<p>2월 17일 발행</p>
</div>
</div>
);
}
export default App;
이걸 다 읽으신다면 이제 당신은 onClick 이벤트에 대한 array 사용법을 마친것이라고 보면 되겠습니다.
우리 함께 장인이 되어 onClick 조져 버립시다.
아자 아자~~!~!