생활코딩 React #6
update & delete 구현
update 구현하기
- updateContent 컴포넌트를 createContent 컴포넌트와 같은 형식으로 만들어준다.
state를 이용한 직접 수정 불가 이슈
...
render() {
...
<p>
<input
type="text"
placeholder="title"
name="title"
value={this.props.data.title} //warning
></input>
</p>
...
}
...
render() {
...
<p>
<input
type="text"
placeholder="title"
name="title"
value={this.props.data.title} //warning
></input>
</p>
...
}
위에서 props의 값은 readonly 이기 떄문에 warning 에러가 발생한다.
이를 해결하기 위해서 props를 받아와서 state화 해준다. 위 코드가 속해있는 class 상단에 아래와 같은 생성자를 추가해준다. 그러고나서 위 this.props.data.title
부분을 state화 한 state를 가져와서 아래와 같이 this.state.title
로 수정해준다.
class UpdateContent extends Component {
constructor(props) {
super(props);
this.state = {
title: this.props.data.title
}
}
}
render() {
...
<p>
<input
type="text"
placeholder="title"
name="title"
value={this.state.title} //warning
//state를 이용해서 수정
></input>
</p>
...
}
하지만 이렇게 해도 readonly 가 되는 것은 변함이 없고 똑같은 에러가 발생한다. 그리고 에러 메세지에는 onChange 핸들러를 추가해야 한다고 말한다.
render() {
...
<p>
<input
type="text"
placeholder="title"
name="title"
value={this.state.title}
onChange={function(e){
this.setState({title: e.target.value});
}.bind(this)}
></input>
</p>
...
}
결국 state화 한 이유는 이렇게 onChange 핸들러를 추가해서 setState를 사용하기 위함이었다. onChange 핸들러를 추가해서 state를 클래스 내부에서 수정하는 것은 가능하기 때문에 이와 같이 state를 수정해주면 수정된 this.state.title
이 value 프로퍼티에 들어가면서 수정될때마다 value 프로퍼티가 갱신이 된다.
Author And Source
이 문제에 관하여(생활코딩 React #6), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dom_hxrdy/생활코딩-React-6저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)