<예제 내용>
아티클을 생성하는 CreateArticle 컴포넌트를 만들고,
App.js에서 onSubmit이라는 함수를 통해 자식 CreateArticle 컴포넌트로부터 매개변수 _title과 _desc를 전송받는다.
CreateArticle 컴포넌트의 form 폼으로 전송된 속성 값을 onSubmit 함수를 통해 App.js에 보내고 state에 생성한다.
폼으로 전송한 속성 위치 확인하는 법
폼을 통해 임의로 '타이틀'과 '설명' 값을 전송하였다.
전송된 값의 위치를 확인하기 위해 debugger;를 이용하여 멈춰두고 개발자 도구에서 값이 저장된 위치를 확인한다.
App.js
let _title,
_desc,
_article = null; //변수 초기화 선언
else if (this.state.mode == "create") {
_article = (
<CreateArticle onSubmit={function (_title, _desc) {}.bind(this)} />
); //create모드에서 onSubmit이라는 함수를 통해 컴포넌트에서 매개변수 _title과 _desc를 받음
}
CreateArticle 컴포넌트
<form
action=""
method="post"
onSubmit={function (e) {
e.preventDefault();
alert("제출");
debugger; //debugger를 통해 개발자 도구에서 멈추고 속성값 확인 가능
this.props.onSubmit();
}.bind(this)}
>
<p><input type="text" name="title" placeholder="title" /></p>
<p><textarea name="message" placeholder="description"></textarea></p>
<p><input type="submit" value="전송" /></p>
</form>
개발자도구
debugger에서 멈춰 있는 것을 확인할 수 있음.
컴포넌트 안에서 onSubmit 함수에서 매개변수 e로 받았기 때문에,
e 매개변수 안에서 폼으로 전송한 타이틀과 설명 값을 찾을 수 있다.
개발자 도구를 확인해보면 아래 위치에 저장된 값을 확인할 수 있다.
"타이틀"은
위치 1) e.target[0].value
위치 2) e.target.title.value (input에서 name="title"로 받음)
"설명"은
위치 1) e.target[1].value
위치 2) e.target.message.value (input에서 name="message"로 받음)
확인한 값의 저장된 위치를 컴포넌트에 반영하고 App.js는 매개변수 _title, _desc 로 받는다.
Create Article 컴포넌트
<form
action=""
method="post"
onSubmit={function (e) {
e.preventDefault();
this.props.onSubmit(e.target.title.value, e.target.message.value);
}.bind(this)}
>
<p><input type="text" name="title" placeholder="title" /></p>
<p><textarea name="message" placeholder="description"></textarea></p>
<p><input type="submit" value="전송" /></p>
</form>
App.js
else if (this.state.mode == "create") {
_article = (
<CreateArticle
onSubmit={function (_title, _desc) {
this.max_menu_id += 1;
this.state.menus.push({
id: this.max_menu_id,
title: _title,
desc: _desc,
});
this.setState({
menus: this.state.menus,
});
console.log(this.state.menus);
}.bind(this)}
/>
);
}
* 잘못된 정보 및 오류가 있을 경우 댓글에 적극적으로 말씀 부탁드립니다. 수정, 보완 하겠습니다.
'React' 카테고리의 다른 글
[리액트] swiper js 사용방법 / 리액트 슬라이드 라이브러리 (0) | 2022.07.23 |
---|---|
[리액트] Function vs Class(Component) 클래스형 컴포넌트와 함수형 컴포넌트의 차이 (0) | 2022.07.22 |
[리액트] JSX 리액트 문법 소개, 리액트 코드 이해 (0) | 2022.07.17 |
[리액트] 주석 작성 방법 (0) | 2022.07.16 |
[리액트] 리액트 설치 및 작업 환경 설정 방법 (macOS / window) (0) | 2022.07.15 |