react 를 공부하는데 있어 props 값이 기본이지만 이해하는데 어려움이 있었다.
이번엔 컴포넌트 3개를 이용하여 container, input, result 각각 작성하여 props 값 넘기기 예제를 작성해 보았다.
먼저, 아래와 같이 컴포넌트 3개를 작성한다.
src/BoardContainer.js
import React from 'react';
import BoardInput from '@BoardNew/BoardInput'
import BoardResult from '@BoardNew/BoardResult'
function BoardContainer() {
return(
<div>
<div>
<BoardInput />
</div>
<hr />
<div>
<BoardResult />
</div>
</div>
)
}
export default BoardContainer;
src/BoardInput.js
import React from 'react';
function BoardInput() {
return (
<div>
<div>
내용: <input type="text" />
<button>input</button>
</div>
</div>
);
}
export default BoardInput;
src/BoardResult.js
import React from 'react';
function BoardResult(props) {
return(
<div>
결과: <input type="text"/>
</div>
)
}
export default BoardResult;
작성 됐다면 아래와 같이 나타난다.
먼저, BoardContainer.js 에선 useState 를 사용하여 inputData 관리를 하고, BoardInput.js 에서 input 버튼을 누르면 값을 전달 받아서 setInputData 하여 BoardResult.js 에 전달 한다.
src/BoardContainer.js
import React, { useState } from 'react';
import BoardInput from '@BoardNew/BoardInput'
import BoardResult from '@BoardNew/BoardResult'
function BoardContainer() {
const [inputData, setInputData] = useState({
content: ''
});
const onCopy = (data) => {
setInputData(data.content)
}
return(
<div>
<div>
<BoardInput onCopy={onCopy} />
</div>
<hr />
<div>
<BoardResult inputData={inputData}/>
</div>
</div>
)
}
export default BoardContainer;
BoardInput.js 에서도 별도로 useState 로 content 를 관리하고, input 란으로 입력되는 값을 handleContent 로 setContent 해준다.
input 버튼을 클릭하면 부모 컴포넌트인 BoardContainer.js 와 동일한 형식으로 데이터를 저장하여 props 로 전달받은 함수를 이용하여 onCopy 함수를 호출하고, input 란의 값은 지운다.
src/BoardInput.js
import React, { useState } from 'react';
function BoardInput(props) {
const { onCopy } = props
const [content, setContent] = useState('')
const handleContent = (e) => {
setContent(e.target.value)
}
const onSubmit = () => {
const _inputData = {
content: {content}
}
onCopy(_inputData)
setContent('')
}
return (
<div>
<div>
내용: <input type="text" name="content" onChange={handleContent} value={content} />
<button onClick={onSubmit}>input</button>
</div>
</div>
);
}
export default BoardInput;
BoardResult.js 는 간단하게 BoardContainer.js 로부터 prop 받은 값을 value 로 나타내 주기만 하면 끝이다.
src/BoardResult.js
import React from 'react';
function BoardResult(props) {
const { inputData } = props
return(
<div>
결과: <input type="text" value={inputData.content}/>
</div>
)
}
export default BoardResult;
이로써 너무나 간단하게 props 전달하는 예제를 완료 하였다. 이 예제로 redux 를 이용한 방식도 해봐야겠다.
'React' 카테고리의 다른 글
[React] express 를 이용하여 서버사이드렌더링 - 떽떽대는 개발공부 (0) | 2021.01.23 |
---|---|
[React] redux 를 이용한 예제 - 떽떽대는 개발공부 (0) | 2021.01.22 |
[React] input 데이터 수정 - 떽떽대는 개발공부 (0) | 2021.01.20 |
[React] react, redux 를 사용하여 게시판 만들기 - 떽떽대는 개발공부 (1) | 2021.01.19 |
[React] 절대경로를 사용하여 css 적용하기 - 떽떽대는 개발공부 (0) | 2021.01.15 |
댓글