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 |
Tags
- Math.floor()
- indexOf()
- charAt()
- isNaN()
- substring()
- useEffect()
- useState()
- getday()
- sort()
- Eventlitener
- map()
- toUpperCase()
- Math.sqrt()
- reat if문
- includes()
- 차집합
- slice()
- parseInt()
- 항해99솔직후기 #항해99장점 #항해99단점 #부트캠프추천
- 교집합
- 소수점 올림내림
- new Date()
- setDate
- Number()
- 3진수
- repeat()
- React
- filter()
- jsx반복문
- useRef()
Archives
- Today
- Total
개발자로 전향중
React Hook: useState(함수) 본문
setState() - 함수 기반 상태 관리
React Hooks에서 제공하는 useState() 함수를 사용해서 위의 클래스 기반 컴포넌트를 함수 기반으로 재작성해보았습니다. setState() 함수는 배열을 리턴하는데 첫 번째 원소는 상태 값을 저장할 변수이고 두번 째 원소는 해당 상태 값을 갱신할 때 사용할 수 있는 함수입니다. 그리고 setState() 함수에 인자로 해당 상태의 초기 값을 넘길 수 있습니다.
const [<상태 값 저장 변수>, <상태 값 갱신 함수>] = useState(<상태 초기 값>);
import React from "react";
// BucketList 컴포넌트를 import 해옵니다.
// import [컴포넌트 명] from [컴포넌트가 있는 파일경로];
import BucketList from "./BucketList";
import styled from "styled-components";
function App() {
const [list, setList] = React.useState(["영화관 가기", "매일 책읽기", "수영 배우기"]);
// 상태값이 동적으로 바뀔경우 hook usestate const [상태 값 저장 변수, 상태 값 갱신함수] = useState[상태초기값]
const text = React.useRef(null);
const addBucketList = () => {
// 스프레드 문법! 기억하고 계신가요? :)
// 원본 배열 list에 새로운 요소를 추가해주었습니다.
setList([...list, text.current.value]);
}
return (
<div className="App">
<Container>
<Title>내 버킷리스트</Title>
<Line />
{/* 컴포넌트를 넣어줍니다. */}
{/* <컴포넌트 명 [props 명]={넘겨줄 것(리스트, 문자열, 숫자, ...)}/> */}
<BucketList list={list} />
</Container>
{/* 인풋박스와 추가하기 버튼을 넣어줬어요. */}
<Input>
<input type="text" ref={text} />
<button onClick={addBucketList}>추가하기</button>
</Input>
</div>
);
}
const Input = styled.div`
max-width: 350px;
min-height: 10vh;
background-color: #fff;
padding: 16px;
margin: 20px auto;
border-radius: 5px;
border: 1px solid #ddd;
`;
const Container = styled.div`
max-width: 350px;
min-height: 60vh;
background-color: #fff;
padding: 16px;
margin: 20px auto;
border-radius: 5px;
border: 1px solid #ddd;
`;
const Title = styled.h1`
color: slateblue;
text-align: center;
`;
const Line = styled.hr`
margin: 16px 0px;
border: 1px dotted #ddd;
`;
export default App;
'React' 카테고리의 다른 글
리액트에서 자주쓰는 if문 작성패턴 5개 (0) | 2022.01.22 |
---|---|
react(리액트) JSX 배열 반복문 렌더링 - for/map/forEach (0) | 2022.01.22 |
React router dom v6 (0) | 2022.01.22 |
React Hook: useref() (0) | 2022.01.22 |
React Hook: useEffect(), EventListener (0) | 2022.01.22 |