본문 바로가기

교육

react-helmet의 기본 개념과 사용법

반응형

1. react-helmet 설치 방법

중요: react-helmet은 더 이상 유지보수되지 않으며, react-helmet-async가 권장 대체 패키지입니다. 아래는 react-helmet 설치 방법이며, 실무에서는 react-helmet-async 사용을 강력히 권장합니다.

 

Yarn 사용 시:

yarn add react-helmet

 

npm 사용 시:

 

npm install react-helmet

 

  • react-helmet의 역할을 이해합니다.
  • React 애플리케이션에서 HTML <head> 태그를 동적으로 관리하는 방법을 배웁니다.
  • title, meta, link 태그를 컴포넌트 내에서 설정해보는 실습을 합니다.
  • <head> 태그의 동적 관리:
  • React 애플리케이션은 SPA(Single Page Application)로, URL이 변경되어도 <head> 태그의 내용은 기본 HTML 파일에서 정의된 내용으로 고정됩니다.
  • react-helmet을 사용하면 각 페이지(컴포넌트)에 따라 <head> 태그의 내용을 동적으로 변경할 수 있습니다.
  • SEO 및 메타 정보: 검색 엔진 최적화(SEO)를 위해 title, description, keywords 등의 메타 태그를 동적으로 설정하는 것이 중요합니다.
  • 사용 예시: 게시판 글 제목, 상품명, 브랜드명 등에 따라 <title>을 변경하거나, 각 페이지의 설명을 meta description으로 설정할 수 있습니다.

react-helmet 사용법

import { Helmet } from 'react-helmet';

function MyComponent() {
  return (
    <div>
      <Helmet>
        <title>My Custom Title</title>
        <meta name="description" content="This is my custom page" />
        <link rel="canonical" href="http://mysite.com/example" />
      </Helmet>
      <h1>My Component Content</h1>
    </div>
  );
}

 

  • Helmet 컴포넌트 내부에 HTML <head> 태그에 들어갈 요소들을 작성하면, react-helmet이 자동으로 실제 HTML의 <head> 태그에 적용해줍니다.
// src/components/BasicHelmet.tsx
import React from 'react';
import { Helmet } from 'react-helmet';

const BasicHelmet: React.FC = () => {
  return (
    <div>
      <Helmet>
        <title>기본 헬멧 타이틀</title>
        <meta name="description" content="기본 헬멧 예제입니다." />
        <meta name="keywords" content="react, helmet, seo" />
      </Helmet>
      <h1>기본 헬멧 예제</h1>
      <p>이 페이지는 기본 Helmet 설정을 보여줍니다.</p>
    </div>
  );
};

export default BasicHelmet;

예제 2: 동적 타이틀과 메타 정보

// src/components/DynamicHelmet.tsx
import React from 'react';
import { Helmet } from 'react-helmet';

interface Props {
  title: string;
  description: string;
}

const DynamicHelmet: React.FC<Props> = ({ title, description }) => {
  return (
    <div>
      <Helmet>
        <title>{title}</title>
        <meta name="description" content={description} />
      </Helmet>
      <h1>{title}</h1>
      <p>{description}</p>
    </div>
  );
};

export default DynamicHelmet;

 

// src/App.tsx
import React from 'react';
import BasicHelmet from './components/BasicHelmet';
import DynamicHelmet from './components/DynamicHelmet';

function App() {
  return (
    <div className="App">
      <Helmet>
        <title>기본 앱 타이틀</title>
        <meta name="description" content="이 앱의 기본 설명입니다." />
      </Helmet>
      <BasicHelmet />
      <DynamicHelmet title="동적 타이틀" description="이것은 동적으로 변경된 설명입니다." />
    </div>
  );
}

export default App;
반응형