유쨈미 2024. 7. 31. 15:02

1. React-bootstrap

React-bootstrap은 React 컴포넌트로 재구현된 Bootstrap 라이브러리이다.

이를 통해 React 애플리케이션에서 Bootstrap의 UI 요소를 쉽게 사용할 수 있다.

 

💡 주요 특징

  1. React 컴포넌트 기반
  2. Bootstrap 스타일링 지원
  3. 반응형 디자인
  4. 접근성 고려

 

📌 주요 컴포넌트

컴포넌트 설명
Container 레이아웃 컨테이너
Row, Col 그리드 시스템
Button 버튼 컴포넌트
Form 폼 관련 컴포넌트
Modal 모달 다이얼로그

 

💻 사용 예시 코드

import React from 'react';
import { Container, Row, Col, Button } from 'react-bootstrap';

function App() {
  return (
    <Container>
      <Row>
        <Col>
          <h1>Hello, React-Bootstrap!</h1>
          <Button variant="primary">Click me</Button>
        </Col>
      </Row>
    </Container>
  );
}

export default App;
 

React-bootstrap 사용하기

React-Bootstrap은 리액트에서 css 작업을 원활하게 도와주는 라이브러리이다. React-Bootstrap 없이 css 작업을 한다하면 디자인적으로 신경쓸 부분이 많은데, 이것을 통해 간단하게 이쁜 html을 구현해볼

velog.io

- 참고 : brgndy

 

React에 bootstrap 적용하기

React bootstrap 적용

velog.io

- 참고 : dev_0livia.log


2. React CORS

CORS(Cross-Origin Resource Sharing)는 다른 출처의 리소스를 공유할 수 있게 하는 메커니즘이다.

React 애플리케이션에서 API 서버와 통신할 때 자주 마주치는 이슈이다.

 

🚀 CORS 해결 방법

방법 설명
서버 측 설정 API 서버에서 CORS 허용
프록시 설정 개발 서버에서 프록시 사용
HTTP-proxy-middleware 더 세밀한 프록시 설정

 

💻 React에서 CORS 처리 예시 코드

// package.json
{
  "proxy": "http://api.example.com"
}

// API 호출 코드
fetch('/api/data')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
 

[React] 클라이언트에서 CORS 해결하기(http-proxy-middleware)

SOP, CORS에 대해 알아보고 React Client에서 프록시 서버 모듈인 http-proxy-middleware를 이용하여 CORS 에러를 해결했습니다.

www.datoybi.com

- 참고 : Steady-Dev


3. useState (심화)

useState함수형 컴포넌트에서 상태를 관리하는 Hook이다.

 

📌 고급 사용법

기능 설명
함수형 업데이트 이전 상태를 기반으로 업데이트
지연 초기화 초기 상태를 계산하는 함수 전달
객체 상태 관리 복잡한 객체 상태 효율적으로 관리

 

💻 예시 코드

import React, { useState } from 'react';

function AdvancedCounter() {
  // 함수형 업데이트
  const [count, setCount] = useState(0);
  const increment = () => setCount(prevCount => prevCount + 1);

  // 지연 초기화
  const [user, setUser] = useState(() => {
    const savedUser = localStorage.getItem('user');
    return savedUser ? JSON.parse(savedUser) : null;
  });

  // 객체 상태 관리
  const [form, setForm] = useState({ name: '', email: '' });
  const updateForm = (key, value) => {
    setForm(prevForm => ({ ...prevForm, [key]: value }));
  };

  return (
    // JSX
  );
}
 

useState – React

The library for web and native user interfaces

ko.react.dev

- 참고 : ko.react.dev

 

7. useState 를 통해 컴포넌트에서 바뀌는 값 관리하기 · GitBook

7. useState 를 통해 컴포넌트에서 바뀌는 값 관리하기 지금까지 우리가 리액트 컴포넌트를 만들 때는, 동적인 부분이 하나도 없었습니다. 값이 바뀌는 일이 없었죠. 이번에는 컴포넌트에서 보여줘

react.vlpt.us

- 참고 : react.vlpt.us


4. useEffect (심화)

useEffect부수 효과를 처리하는 Hook이다.

 

📌 고급 사용법

기능 설명
조건부 실행 의존성 배열을 통한 실행 제어
클린업 함수 부수 효과 정리
비동기 처리 async/await 사용
디바운싱/쓰로틀링 성능 최적화

 

💻 예시 코드

import React, { useState, useEffect } from 'react';

function AdvancedEffect() {
  const [data, setData] = useState(null);
  const [search, setSearch] = useState('');

  // 비동기 처리와 클린업
  useEffect(() => {
    let isMounted = true;
    const fetchData = async () => {
      const response = await fetch(`https://api.example.com/data?search=${search}`);
      const result = await response.json();
      if (isMounted) setData(result);
    };
    fetchData();
    return () => { isMounted = false; };
  }, [search]);

  // 디바운싱
  useEffect(() => {
    const debounceTimer = setTimeout(() => {
      console.log('Debounced search:', search);
    }, 300);
    return () => clearTimeout(debounceTimer);
  }, [search]);

  return (
    // JSX
  );
}

 

🚀 실습하며 궁금했던 부분

더보기

코드 끝 부분 빈 배열의 의미

    useEffect(() => {
        fetch("/web_react/abc.jsp", {method:'GET'})
        .then(res => {
            if(!res.ok) {
                throw new Error('network response was not ok');  // 실패하면 error message
            }
            return res.json(); // 성공하면 json으로 받아준다.
        })
        .then(
            (result) => {
                setIsLoaded(true);
                setItems(result.items); // 8번 줄의 items X. json의 items값임
            },
            (error) => {
                setIsLoaded(true);
                setError(error); // setEroor는 23번줄의 error값을 가져감
            }
        )
    }, []);

 

이 코드에서 useEffect Hook의 끝 부분에 있는 빈 배열 []은 의존성 배열(dependency array)을 나타낸다.
이 빈 배열의 의미는 다음과 같다.

  1. 컴포넌트가 처음 마운트될 때만 useEffect 내부의 코드가 실행된다.
  2. 이후 리렌더링 시에는 이 효과가 다시 실행되지 않는다.

즉, 이 useEffect는 컴포넌트의 생명주기 중 "마운트" 단계에서만 실행되는 것을 의미한다.
이는 주로 초기 데이터 불러오기나 구독 설정 등 한 번만 실행되어야 하는 작업에 사용된다.

 

만약 이 배열에 어떤 값들이 포함되어 있다면, 그 값들이 변경될 때마다 useEffect 내부의 코드가 다시 실행된다.
하지만 빈 배열 []을 사용하면, 어떤 값의 변화에도 반응하지 않고 오직 컴포넌트가 처음 렌더링될 때만 실행된다.

 

 

Using the Effect Hook – React

A JavaScript library for building user interfaces

ko.legacy.reactjs.org

- 참고 : ko.legacy.reactjs.org

 

[React] 7. React hooks[2] - useEffect란?

7. React hooks[2] - useEffect란? 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ React hook 중 useEffect에 대한 내용 ] 입니다. : ) https://ko.reactjs.org/docs/hooks-effect.html 1. useEffect 훅이란? - 컴포넌트가 렌더링 될

goddaehee.tistory.com

- 참고 : goddaehee