hmk run dev
리액트 인풋 Event 파헤쳐보자! 본문
클라이언트가 입력한 값을 받아올 수 있는 인풋박스 만들기
> 클래스형 컴포넌트라면 constructor안에 this.text = React.createRef(); Ref변수 만들기
> <input type="text" ref={this.text} /> 인풋 박스안에 ref 달아주기
> Ref 값(인풋의 value값) 가져와서 state 업데이트 해주기 여기선 함수를 만들어 주는게 좋다(참고로 constructor 밖에선 const 필요)
> setState + 스프레드문법으로 state 안의 배열에 새로운 배열을 추가 함으로써 버킷리스트 추가 가능
스프레드 문법 > [...배열이름, 추가하고 싶은 배열이나 요소] 이렇게 써주면 배열값을 하나하나 나열하고 거기에 요소를 더 해줄주어 새로운 배열을 만들 수 있다
class App extends React.Component {
constructor(props) {
super(props);
// App 컴포넌트의 state를 정의해줍니다.
this.state = {
list: ["영화관 가기", "매일 책읽기", "수영 배우기"],
};
this.text = React.createRef();
}
addBucketList = () => {
let list = this.state.list; //state는 변수에 넣을 수 있음
const new_item = this.text.current.value; //가져온 text 값을 담을 변수
this.setState({ list: [...list, new_item] }); //이제 기존의 스테이트에 setState로 배열을 추가 해준다
//스프레드 문법 [...배열이름, c추가할 배열 ] ...을 쓰면 그 배열의 요소가 하나하나 다들어옴 여기에 새로 추가할 거 +
};
// 랜더 함수 안에 리액트 엘리먼트를 넣어줍니다!
render() {
return (
<div className="App">
<Container>
<Title>내 버킷리스트</Title>
<Line />
{/* 컴포넌트를 넣어줍니다. */}
{/* <컴포넌트 명 [props 명]={넘겨줄 것(리스트, 문자열, 숫자, ...)}/> */}
<BucketList list={this.state.list} />
</Container>
<Input>
<input type="text" ref={this.text} />
<button onClick={this.addBucketList}>추가하기</button>
</Input>
</div>
);
}
}
'React' 카테고리의 다른 글
리덕스에서 FireStore 사용해보기 (0) | 2021.03.22 |
---|---|
클릭하면 색이 바뀌는 Event (0) | 2021.03.22 |
state 관리 함수형 컴퍼넌트 (0) | 2021.03.21 |
state 연습 + 코드 상세 해석 (0) | 2021.03.21 |
React prac 내장함수 라이프 사이클 (0) | 2021.03.21 |
Comments