"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > React 애플리케이션에 미리보기와 함께 링크를 포함하는 방법

React 애플리케이션에 미리보기와 함께 링크를 포함하는 방법

2024-11-08에 게시됨
검색:772

소개

웹 애플리케이션을 구축할 때 URL을 공유할 때 소셜 미디어 플랫폼에서 링크 미리 보기를 표시하는 방식과 같이 링크 콘텐츠의 미리 보기를 표시하는 것이 유용한 경우가 많습니다. 따라서 URL 텍스트 대신 URL 옆에 사진 및 설명과 같은 정보도 표시할 수 있습니다.

이 게시물에서는 대상 페이지의 HTML을 스크랩하기 위해 axios 및 Cherio를 사용하여 Open Graph 메타데이터(제목, 이미지, 설명 등)를 가져오는 동안 React 앱에 링크를 삽입하는 방법을 안내하겠습니다.

제공된 모든 URL에 대한 오픈 그래프 메타데이터를 가져와 표시하는 간단한 EmbeddedLink 구성 요소를 만들어 보겠습니다.

전제 조건

시작하기 전에 다음이 설치되어 있는지 확인하세요.

  1. React – Create React App 또는 원하는 방법을 사용하여 React 프로젝트를 설정합니다.
  2. Axios – HTTP 요청을 생성하는 데 사용됩니다.
  3. Cheerio – HTML 구문 분석 및 스크래핑용(일반적으로 스크래핑에 사용되는 서버 측 jQuery와 유사한 라이브러리).

다음 명령을 사용하여 Axios와 Cheerio를 설치할 수 있습니다.

npm install axios cheerio

1단계: EmbeddedLink 구성 요소 생성

URL을 소품으로 사용하고 나중에 사용할 해당 링크에서 Open Graph 메타데이터를 가져오는 새로운 EmbeddedLink 구성 요소를 만듭니다. 전체 코드는 다음과 같습니다.

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

const EmbeddedLink = ({ url }) => {
    const [loading, setLoading] = useState(true);
    const [error, setError] = useState(null);
    const [imageUrl, setImageUrl] = useState('');
    const [title, setTitle] = useState('');
    const [description, setDescription] = useState('');

    useEffect(() => {
        const fetchOGData = async () => {
            try {
                const response = await axios.get(url, {
                    headers: {
                        'origin': 'https://mysite.com'
                    }
                });
                const html = response.data;

                // Parse HTML content using Cheerio
                const $ = cheerio.load(html);
                const ogImage = $('meta[property="og:image"]').attr('content');
                const ogTitle = $('meta[property="og:title"]').attr('content');
                const ogDesc = $('meta[property="og:description"]').attr('content');

                setImageUrl(ogImage || '');
                setTitle(ogTitle || '');
                setDescription(ogDesc || '');
                setLoading(false);
            } catch (error) {
                setError(error);
                setLoading(false);
            }
        };

        fetchOGData();
    }, [url]);

    if (loading) return 
Loading...
; if (error) return
Error: {error.message}
; return (
{imageUrl && {title}} {title &&

{title}

}
{!imageUrl && !title &&

No preview available

}

{description}

{url}

); }; export default EmbeddedLink;

2단계: EmbeddedLink 구성 요소 사용

이제 다음과 같이 React 앱에서 EmbeddedLink 구성 요소를 사용할 수 있습니다.

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

function App() {
    return (
        

Link Preview Example

); } export default App;

이미지, 제목, 설명과 함께 제공된 URL의 미리보기가 렌더링됩니다.

오류 처리 및 로드 상태

사용자에게 적절한 메시지를 표시하여 잠재적인 오류와 로드 상태를 처리합니다.

  • 메타데이터를 가져오는 동안 간단한 '로드 중...' 메시지가 표시되거나 애니메이션 스피너 등을 사용할 수 있습니다.
  • 가져오는 동안 문제가 발생하면(예: 네트워크 문제) 오류 메시지가 표시됩니다.

결론

완료되면 아래 그림과 같은 결과를 볼 수 있습니다.

How to embed link with preview in React Application

저는 이 개발자가 포함된 링크 스타일을 선호하지만 원하는대로 스타일을 지정할 수 있습니다.

릴리스 선언문 이 기사는 https://dev.to/basskibo/how-to-embed-link-with-preview-in-react-application-2gdd?1에서 복제됩니다. 침해 내용이 있는 경우, [email protected]으로 문의하시기 바랍니다. 그것을 삭제하려면
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3