Front-end/React

React - Component - 1

Cuvely 2023. 4. 26. 22:26
728x90
반응형

React Component

React Component UI를 재사용 할 수 있도록 개별적으로 여러 조각으로 나누는 단위이다.

component함수로 생성해서 사용할 수 있다.

/* App.css */

.modal {
  margin-top: 20px;
  padding: 20px;
  background: #eee;
  text-align: left;
}
// App.js

/* eslint-disable */

import logo from './logo.svg';
import './App.css';
import { useState } from 'react';

// App() 또한 컴포넌트이다.
function App() {

  let post = 'Restaurant';
  let postId = 'postId';
  let [title, setTitle] = useState(['Title1', 'Title2', 'Title3']);
  let [blogTItle, setBlogTitle] = useState('ReactBlog');
  let [like, changeLike] = useState(0);

  return (
    <div className="App">
      <div className="black-nav">
        <h4 id={postId} style={{ color: 'red', fontSize: '16px' }}>{blogTItle}</h4>
      </div>

      <button onClick={() => {
        let copy = [...title];
        copy[0] = 'New Title1';
        console.log('title: ' + title);
        console.log("copy: " + copy);
        console.log(copy === title);

        setTitle(copy);
      }}>Edit</button>

      <div className="list">
        <h4>{title[0]} <span onClick={() => { changeLike(like + 1) }}>❤</span> {like} </h4>
        <p>4월 26일</p>
      </div>
      <div className="list">
        <h4>{title[1]}</h4>
        <p>4월 26일</p>
      </div>
      <div className="list">
        <h4>{title[2]}</h4>
        <p>4월 26일</p>
      </div>

	  {/* 함수로 생성된component를 적용할 때 태그로 불러와 적용한다. */}
      <Modal></Modal>
    </div>
  );
}

// 함수표현식으로 component 선언
const Modal2 = () => {
  return (
    <div className='modal'>
      <h4>제목</h4>
      <p>날짜</p>
      <p>상세내용</p>
    </div>
  );
}

// 함수선언식으로 component 선언
function Modal() {
  return (
    <div className='modal'>
      <h4>제목</h4>
      <p>날짜</p>
      <p>상세내용</p>
    </div>
  );
}

export default App;

 

함수component생성 한 후 return() 안에 html코드를 적어서 <함수명></함수명> 또는 <함수명 /> 태그를 사용하여 컴포넌트를 적용할 수 있다.

 

컴포넌트 return 안에는 하나의 태그로 묶어줘야한다.

function Modal() {
  return (
  
    <div className='modal'>
      <h4>제목</h4>
      <p>날짜</p>
      <p>상세내용</p>
    </div>
    
    // 하나의 태그로 감싸져있지 않아서 에러가 나타난다.
    <div></div>
  );
}

 

 

 

반응형

 

 

 

만약 2개의 태그를 사용하고 싶을때는 fragment 문법을 사용해서 빈 태그<> 를 만들어 사용할 수 있다.

function Modal() {
  return (
  	// fragment 문법으로 두개의 태그가 존재할 수 있다.
    <>	
      <div className='modal'>
        <h4>제목</h4>
        <p>날짜</p>
        <p>상세내용</p>
      </div>
      <div></div>
    </>
  );
}

 

728x90
반응형