Динамическое значение метатега, такое как изображение, заголовок, описание, не обновляется в теге заголовка в reactjs

Я хочу установить динамическое значение для изображения, заголовка и описания в reactjs. Это то, что я сделал

import { useEffect, useState, useRef } from 'react';
const [thumbnail, setThumbnail] = useState('')
const [metaTitle, setMetaTitle] = useState('');
useEffect(() => {
    const run1 = async () => {
      const x = await apis.getVendorDetails({category, region, brandName});
      setVendorData(x.data)
      if(thisVendor == '') thisVendor = vendorData;
    }
    run1();
  }, [])
if(vendorData !=='' && vendorData !== undefined && (facebook == '' && instagram == '' && website == '' && metaTitle == '' && thumbnail == '')){
    setThumbnail(vendorData.allImages !== undefined || vendorData.allImages !== '' ? vendorData.allImages[0] : '')
    setMetaTitle((vendorData.category !== undefined || vendorData.category !== '') ? vendorData.category + ' | ' + vendorData.companyName : '');
  }

return (
        <Layout1 vendorData={vendorData} isLogin={isLogin} customerData={customerData} isLoginCustomer={isLoginCustomer}>
          <Head>
            <meta property="og:title" content={metaTitle}/>
            <meta property="og:image" itemProp="image" content={thumbnail}/>
            <meta property="og:type" content="website"/>
            <meta property="og:image:width" content="256"/>
            <meta property="og:image:height" content="256"/>
          </Head>
</Layou1>
);

Это то, что я пробовал

Мета-значение для содержания изображения и заголовка не обновляется Пожалуйста, помогите мне

1 ответ

Рассмотрите возможность использования React Helmet:

import { useEffect, useState, useRef } from "react";
import { Helmet } from "react-helmet";

const [thumbnail, setThumbnail] = useState("");
const [metaTitle, setMetaTitle] = useState("");

useEffect(() => {
  const run1 = async () => {
    const x = await apis.getVendorDetails({ category, region, brandName });
    setVendorData(x.data);
    if (thisVendor == "") thisVendor = vendorData;
  };
  run1();
}, []);

if (
  vendorData !== "" &&
  vendorData !== undefined &&
  facebook == "" &&
  instagram == "" &&
  website == "" &&
  metaTitle == "" &&
  thumbnail == ""
) {
  setThumbnail(
    vendorData.allImages !== undefined || vendorData.allImages !== ""
      ? vendorData.allImages[0]
      : ""
  );
  setMetaTitle(
    vendorData.category !== undefined || vendorData.category !== ""
      ? vendorData.category + " | " + vendorData.companyName
      : ""
  );
}

return (
  <Layout1
    vendorData={vendorData}
    isLogin={isLogin}
    customerData={customerData}
    isLoginCustomer={isLoginCustomer}
  >
    <Helmet>
      <meta property="og:title" content={metaTitle} />
      <meta property="og:image" itemProp="image" content={thumbnail} />
      <meta property="og:type" content="website" />
      <meta property="og:image:width" content="256" />
      <meta property="og:image:height" content="256" />
    </Helmet>
  </Layout1>
);
Другие вопросы по тегам