리액트 Button을 누르면 state 변경 값으로 전환 *원본 데이터 보존

2024. 1. 16. 17:20 · Programming/React

버튼을 누르면 state 변경 값으로 전환 되게끔 할 수 있다. 

 

- 방법 1 : 배열을 그대로 가져와서 수정하기

let [articleList, articleSwitch] = useState(['남자코트 추천', '강남 우동 맛집', '파이썬 독학']);
   
   return (
        <button onClick={()=> 
        	articleSwitch(['여자코트 추천', '강남 우동 맛집', '파이썬 독학'])}> 글변경버튼
        </button>
   )

 

하지만 이렇게 할 경우에는 원본 데이터인 articleList가 보존이 안되고 여자코트 추천으로 바뀌기 때문에 적합하지 않다. 

 

그래서 우리는 원본 데이터를 보존하면서 state를 사용해야하는 것이다. 

 

 

- 방법 2 : 원본 데이터 보존하면서 값 변경

let [articleList, articleSwitch] = useState(['남자코트 추천', '강남 우동 맛집', '파이썬 독학']);
   
   return (
        <button onClick={()=> 
        	let copy = [...articleList]; #원본 데이터 값의 복사본 만들기
        	articleSwitch(['여자코트 추천', '강남 우동 맛집', '파이썬 독학'])}> 글변경버튼
        </button>
   )

 

** 주의사항

let copy = articleList;  (X)
let copy = [...articleList]; (O)

 

복사본을 만들 때, 실제로는 배열의 참조를 만들고 있어서 copy를 수정하면 원본 articleList도 수정될 수 있다. 그렇기에 배열의 얕은 복사(shallow copy)를 만들어야 한다. 이때는 전개 연산자(...)를 사용하면 된다. 

728x90

'Programming > React' 카테고리의 다른 글

리액트 componenet 만들기 : <div>가 많으면 component 사용  (1) 2024.01.16
React 좋아요 누를때마다 1씩 증가하는 버튼 만들기  (0) 2024.01.16
함수 만들기 : 식은 무조건 그릇을 따로 만들어서  (0) 2024.01.16
리액트 Warning 경고 안뜨게 하기 /* eslint-disable*/  (0) 2024.01.16
state란? 왜 쓰는 것일까? destructuring?  (0) 2024.01.16
'Programming/React' 카테고리의 다른 글
  • 리액트 componenet 만들기 : <div>가 많으면 component 사용
  • React 좋아요 누를때마다 1씩 증가하는 버튼 만들기
  • 함수 만들기 : 식은 무조건 그릇을 따로 만들어서
  • 리액트 Warning 경고 안뜨게 하기 /* eslint-disable*/
따`ddah
따`ddah
    250x250
  • 따`ddah
    IT's ddah
    따`ddah
  • 관리    글쓰기
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Projects
        • Auto Post : SNS 자동 업로더
      • kmooc
        • 기계 학습 기반의 데이터 공학
      • Algorithm
        • [C] Do it! 자료구조와 함께 배우는 알고리..
        • 알고리즘 스터디
        • 코딩 테스트
      • Basic
        • 운영체제 OS
        • 컴퓨터구조
        • 소프트웨어공학 (UML)
      • DBMS
        • 데이터베이스 이론
        • MySQL
        • Oracle SQL
        • BigQuery
        • Yammer
      • Programming
        • Python
        • C
        • Java
        • React
        • JavaScript
        • R
      • 빅데이터
      • AI
        • 멀티미디어응용
        • 머신러닝
        • 인공지능
      • 자격증
        • Azure DP-900
        • Azure AI-900
        • SQLD
        • CSTS
      • 대외활동 및 인턴
        • 인턴
        • LG Aimers
        • Outta
        • 빅데이터 분석 학회 BDA
        • 세계시민교육연구소 청년단 GYIA
      • Tool
        • Git
        • IDE
      • 도서
        • IT
      • 그 외
        • 단축키
        • ✞
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오블완
    파이썬 챗봇 만들기
    Oracle
    jsx
    BDA학회
    이름나이
    input
    sql
    오라클SQL
    리액트
    파이썬
    취업준비
    importturtle
    자바스크립트
    빅데이터분석
    주석
    대학생학회
    dbms
    react
    티스토리챌린지
    자료형
    javascript
    파이썬{}
    js
    print(f"")
    취업
    대외활동
    python
    AI역량검사
    Py
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
따`ddah
리액트 Button을 누르면 state 변경 값으로 전환 *원본 데이터 보존
상단으로

티스토리툴바