Heim  >  Fragen und Antworten  >  Hauptteil

Serverseitiges NextJS-Rendering unter Verwendung der Front-End-React-Query-Integration

Ich habe derzeit die folgende React-Abfrageimplementierung:

const { data, isSuccess, isLoading } = useQuery(['myQuery', myParams], async () => {
    return myAjaxCall(myParams);
}, {
    cacheTime: 0
});

Ich übergebe das zurückgegebene Ergebnis an die benutzerdefinierte Komponente:

<Results foundRecords={data}/>

Ich übergebe die ersten Suchergebnisse an meine übergeordnete Seitenkomponente, damit Suchmaschinen-Crawler die Ergebnisse beim ersten Laden der Seite sehen können (wenn die Anfrage auf der Clientseite erfolgt – d. h. mit useQuery()).

Was ist in diesem Fall der beste Weg, den an die Komponente übergebenen anfänglichen Suchwert (über getServerSideProps() von NextJS) mit getServerSideProps())与 useQuery() zu integrieren?

Aus meinem Kopf sieht es so aus:

export async function getServerSideProps(context){
    ...
    return {
       initialData: ....
    }
}

export default function MyPage({initialData}){
    const { data, isSuccess, isLoading } = useQuery(['myQuery', myParams], async () => {
        return myAjaxCall(myParams);
    }, {
        cacheTime: 0
    });

    return (
        <Results foundRecords={initialData || data}/>   
    )
}

P粉790187507P粉790187507227 Tage vor437

Antworte allen(2)Ich werde antworten

  • P粉726133917

    P粉7261339172024-03-29 14:01:28

    为了获取 Google 抓取工具的结果,您需要使用标题和说明中提供的元数据,还需要在 Google 控制台中提交您的域名

    export default function Mypage({user}) {
        
          return (
            <>
              
                
                
                
                My page
                
                //Open Graph meta tags...
              
              <>Home
            ) 
     }
        
        
    export async function getServerSideProps ({ req }) { 
      const user ={...}
      return {props: {user: user}} 
    }

    Antwort
    0
  • P粉799885311

    P粉7998853112024-03-29 13:29:27

    文档建议将数据放入useQuery的initialData中。然后,您可以继续使用从 useQuery 返回的 data

    export async function getServerSideProps(context){
        ...
        return {
           initialData: ....
        }
    }
    
    export default function MyPage({initialData}){
        const { data, isSuccess, isLoading } = useQuery(['myQuery', myParams], async () => {
            return myAjaxCall(myParams);
        }, {
            cacheTime: 0,
            initialData
        });
    
        return (
               
        )
    }

    Antwort
    0
  • StornierenAntwort