본문 바로가기
React

[React] props 전달받기 예제 - 떽떽대는 개발공부

by 떽이 2021. 1. 21.

 

 

 

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 를 이용한 방식도 해봐야겠다.

 

 

댓글