Maison  >  Questions et réponses  >  le corps du texte

Rendu côté serveur NextJS utilisant l'intégration frontale de React Query

J'ai actuellement l'implémentation de requête React suivante :

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

Je passe le résultat renvoyé au composant personnalisé :

<Results foundRecords={data}/>

Je transmets les résultats de recherche initiaux dans mon composant de page parent afin que les robots des moteurs de recherche puissent voir les résultats lors du chargement initial de la page (si la demande est faite côté client - c'est-à-dire en utilisant useQuery()).

Dans ce cas, quelle est la meilleure façon d'intégrer la valeur de recherche initiale transmise dans le composant (via getServerSideProps() de NextJS) avec getServerSideProps())与 useQuery() ?

Du haut de ma tête, cela ressemble à :

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粉790187507177 Il y a quelques jours400

répondre à tous(2)je répondrai

  • P粉726133917

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

    Pour obtenir les résultats du robot d'exploration Google, vous devez utiliser les métadonnées fournies dans le titre et la description, et vous devez également soumettre votre domaine dans la console 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}} 
    }

    répondre
    0
  • P粉799885311

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

    La documentation recommande de mettre les données dans 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 (
               
        )
    }

    répondre
    0
  • Annulerrépondre