250x250
반응형
- Today
- Total
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- localStorage
- react
- react life sycle
- sessionStorage
- styled-component
- 자바스크립트 순수함수
- 공익 훈련소
- 오블완
- 리액트
- useRouter
- 훈련소
- 사회복무요원 훈련소
- next.js toast
- The above error occurred in the
- react toast
- 오라클클라우드
- resolved to branch.
- 리액트 라이프사이클
- 산업기능요원 훈련소
- 비동기 병렬처리
- 리액트 알림
- svgr
- angular
- query param
- 훈련소 후기
- NextJS
- useformstatus
- 자바스크립트
- no-use-before-define
- server action
Archives
아 그거 뭐였지
[React] useState, onClick 데이터 상태 변화 본문
728x90
반응형
useState
어떠한 이벤트 발생시 변수의 값을 바꾸고 싶을때 useState를 사용한다.
data라는 변수를 선언하고 바꾸고싶다고 하였을때 형태는 아래와 같다.
// useState에는 초기화할 값을 넣어주면 된다.
// setData외에 다른 변수명을 지어도 되지만, 관습적으로 변수명앞에 set을 붙인다.
let [data,setData] = useState('');
return(
<>
<div>{data}</div>
<button onClick={()=>{setData("Hello")}}></button>
</>
)
button을 클릭하게 되면 data의 값이 Hello바뀌는 로직을 작성해보았다. onClick={ 함수로직 } 사용 방법은 이러하다.
배열 형태로의 데이터들도 핸들링이 가능하다. 사용법은 다음과 같다.
let [data,setData] = useState([0,1,2]);
return(
<>
<div>{data}</div>
<button onClick={()=>{
let newArr = [...data];
newArr.push(3);
setData(newArr);
)}}></button>
</>
)
눈여겨 봐야할점은 let newArr = [...data] 이부분이다.
데이터를 수정할때 원본데이터를 직접 수정하는 행위는 지양해야한다. 단순한 데이터의 경우는 바로 접근해도 문제가 없겠지만
서버로부터 데이터를 받아와서 공용적으로 데이터를 사용한다면 데이터가 일관성이 있지 않을수 있다.
원본데이터를 다른곳에서도 사용하고있을수있기때문에 웬만해서는 원본데이터의 사본을 핸들링한다.
이때 스프레드 연산자로 원본배열을 깊은복사를하여 사본을 만들어 준 뒤 데이터를 변경한다.
let [data,setData] = useState([0,1,2]);
return(
<>
<div>{data}</div>
<button onClick={()=>{
setData([3,...data])
)}}></button>
</>
)
이런식으로도 원본데이터를 가져온뒤 새로운 데이터를 붙여서 저장하는 방식도 있다.
Angular와 비슷하면서도 Html에서 직접 함수를 사용해서 데이터를 핸들링 한다는 점에서 다른점이 있는것같다.
728x90
반응형
'Front-End' 카테고리의 다른 글
[Angular] ngIf 조건에 따라 데이터 보여주기 (0) | 2022.03.31 |
---|---|
[Angular] HTML 데이터 바인딩, 데이터 포맷 (0) | 2022.03.29 |
[Angular] ngModel , 데이터 양방향 바인딩 (0) | 2022.03.21 |
[Angular] Input , Output 데코레이터 (0) | 2022.03.15 |
[JavaScript] async함수 활용 팁 (0) | 2022.03.09 |
Comments