Ao criar um aplicativo da web, geralmente é útil mostrar uma prévia do conteúdo de um link, da mesma forma que as plataformas de mídia social mostram visualizações de links quando você compartilha um URL. Então, em vez de apenas o texto do URL, você também pode mostrar informações como fotos e descrição, ao lado do URL.
Nesta postagem, orientarei você na incorporação de links em um aplicativo React, enquanto busca metadados do Open Graph (como título, imagem e descrição) usando axios e cheerio para extrair o HTML da página de destino.
Criaremos um componente EmbeddedLink simples que busca e exibe metadados Open Graph para qualquer URL fornecido.
Antes de começarmos, certifique-se de ter o seguinte instalado:
Você pode instalar Axios e Cheerio usando os seguintes comandos:
npm install axios cheerio
Criaremos um novo componente EmbeddedLink que recebe um URL como suporte e busca os metadados do Open Graph desse link que usaremos mais tarde. Aqui está o código completo:
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) returnLoading...; if (error) returnError: {error.message}; return ( ); }; export default EmbeddedLink;
Agora você pode usar o componente EmbeddedLink em seu aplicativo React assim:
import React from 'react'; import EmbeddedLink from './EmbeddedLink'; function App() { return (); } export default App;Link Preview Example
Isso renderizará uma visualização do URL fornecido, com sua imagem, título e descrição.
Lidamos com possíveis erros e estados de carregamento mostrando mensagens apropriadas ao usuário:
Quando terminar, você poderá ver o resultado como na imagem abaixo.
Eu prefiro este estilo dev.to link incorporado, mas você pode estilizá-lo como quiser e preferir.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3