es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo usar los valores de estado como contenido de Meta tag?

Quiero obtener un enlace de página para previsualizar una imagen y títulos cuando se comparte. Uso el componente Head de Nextjs con ese propósito. Obtengo todos los detalles necesarios al cargar la página y los uso como contenido de los atributos meta.

let campaign = this.state.campaignDetails;
<React.Fragment>
            <Head>
                <title>{campaign!==null && campaign.title}</title>
                <meta name="title" content={campaign!==null && campaign.title}/>
                <meta name="description" content={campaign!==null ? campaign.description : undefined}></meta>
                <meta name="image" content={campaign!==null ? campaign.image : undefined}></meta>

<pre><code>            <meta property="og:title" content={campaign!==null ? campaign.title : undefined}/>
            <meta property="og:type" content="website"/>
            <meta property="og:site_name" content="website"/>
            <meta property="og:url" content="https://website.com/"/>
            <meta property="og:image" content={campaign!==null ? campaign.image : undefined}/>
            <meta property="og:description" content={campaign!==null ? campaign.description : undefined}/>

            <meta name="twitter:card" content={campaign!==null ? campaign.image : undefined}/>
            <meta name="twitter:title" content={campaign!==null ? campaign.title : undefined}/>
            <meta name="twitter:description" content={campaign!==null ? campaign.description : undefined}/>
            <meta name="twitter:site" content="@website"/>
            <meta name="twitter:image" content={campaign!==null ? campaign.image : undefined}/>
            <meta name="twitter:creator" content="@website"/>
        </Head>
        <div></div>
</code></pre>

</React.Fragment>

El enfoque anterior no da el resultado que necesito. Usé React Helmet sin éxito.
¿Qué me falta? Cualquier ayuda es apreciada.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que tu enfoque actual no muestra la imagen y el título cuando se comparte. Una cosa que podrías intentar es agregar las propiedades necesarias a tus etiquetas HTML, como el atributo property="og:image" para la etiqueta de la imagen y el atributo property="og:title" para la etiqueta del título.

    Aquí tienes un ejemplo de cómo podrías modificar tu código para incluir las propiedades necesarias:

    <react.fragment>
      <head>
        <title>{campaign !== null && campaign.title}</title>
        <meta name="title" content="{campaign" !="=" null="" &&="" campaign.title}="">
        <meta name="description" content="{campaign" !="=" null="" campaign.description="" :="" undefined}="">
        <meta name="image" content="{campaign" !="=" null="" campaign.image="" :="" undefined}="">
    
        <meta property="og:title" content="{campaign" !="=" null="" campaign.title="" :="" undefined}="">
        <meta property="og:type" content="website">
        <meta property="og:site_name" content="website">
        <meta property="og:url" content="https://website.com/">
        <meta property="og:image" content="{campaign" !="=" null="" campaign.image="" :="" undefined}="">
        <meta property="og:description" content="{campaign" !="=" null="" campaign.description="" :="" undefined}="">
    
        <meta name="twitter:card" content="summary_large_image">
        <meta name="twitter:title" content="{campaign" !="=" null="" campaign.title="" :="" undefined}="">
        <meta name="twitter:description" content="{campaign" !="=" null="" campaign.description="" :="" undefined}="">
        <meta name="twitter:site" content="@website">
        <meta name="twitter:image" content="{campaign" !="=" null="" campaign.image="" :="" undefined}="">
        <meta name="twitter:creator" content="@website">
    
        {/* Agrega las propiedades necesarias a las etiquetas HTML */}
        <meta property="og:image" content="{campaign" !="=" null="" campaign.image="" :="" undefined}="">
        <meta property="og:title" content="{campaign" !="=" null="" campaign.title="" :="" undefined}="">
    
      </head>
      <div></div>
    </react.fragment>
    

    Observa cómo agregué property="og:image" y property="og:title" a las etiquetas de la imagen y el título respectivamente. Esto debería ayudar a asegurar que la imagen y el título se muestren cuando se comparta la página.

Comments are closed.