컴포넌트 준비하기

우리는 다음과 같은 구성으로, 컴포넌트를 만들어보겠습니다.

App 컴포넌트 내부에 LeftPane 과 RightPane 라는 컴포넌트를 만들고, 한쪽에는 값을 설정시킬 Sends 컴포넌트, 그리고 반대쪽에는 Receives 컴포넌트를 넣어주겠습니다.

그리고, App 에서부터 아래로 props 를 전달하는 것이 아닌, Context 를 통해서 바로 가져와서 사용해보겠습니다.

CSS 클래스 작성하기

컴포넌트 구분을 시각적으로 쉽게 할 수 있도록 스타일을 조금 작성해주겠습니다. 다음 내용을 index.css 에서 작성하세요.

src/index.css

body {
  margin: 0;
  padding: 0;
  font-family: sans-serif;
}

.panes {
  display: flex;
}

.pane {
  flex: 1;
  border: 1px solid black;
  padding: 1rem;
  margin: 1rem;  
}

그 다음에, 각 컴포넌트를 만들어주겠습니다. 아직은 Context 연동을 하지 않은 상태입니다.

이번에 만들 컴포넌트들은 모두 src/components 디렉토리에 위치시키세요.

src/components/Sends.js

이 컴포넌트에서는 값을 설정시킬 form 을 만들어주겠습니다.

import React, { Component } from 'react';

class Sends extends Component {

  state = {
    input: ''
  }

  handleChange = (e) => {
    this.setState({ input: e.target.value });
  }

  handleSubmit = (e) => {
    e.preventDefault();
    // 구현 예정
  }

  render() {
    return (
      <form onSubmit={this.handleSubmit}>
        <input value={this.state.input} onChange={this.handleChange}/>
        <button type="submit">설정</button>
      </form>
    );
  }
}

export default Sends;

src/components/Receives

이 컴포넌트에서는 나중에 값을 받아와서 보여줄 것입니다.

import React from 'react';

const Receives = () => {
  return (
    <div>
      현재 설정된 값: 
    </div>
  );
};

export default Receives;

src/components/LeftPane.js

왼쪽에 보여줄 컴포넌트를 만듭니다. 여기선 Sends 를 보여주고,

import React from 'react';
import Sends from './Sends';

const LeftPane = () => {
  return (
    <div className="pane">
      <Sends />
    </div>
  );
};

export default LeftPane;

src/components/RightPane.js

우측에 보여질 컴포넌트에서는 Receives 를 보여줍니다.

import React from 'react';
import Sends from './Sends';

const RightPane = () => {
  return (
    <div className="pane">
      <Sends />
    </div>
  );
};

export default RightPane;

src/App.js

마지막으로는 LeftPane 과 RightPane 을 보여주는 일만 남았습니다.

import React from 'react';
import LeftPane from './components/LeftPane';
import RightPane from './components/RightPane';

const App = () => {
  return (
    <div className="panes">
      <LeftPane />
      <RightPane />
    </div>
  );
};

export default App;

자~ 이제 컴포넌트를 준비하는 작업이 끝났습니다. 브라우저에서 다음과 같은 화면이 나타나는지 확인하세요.

results matching ""

    No results matching ""