ajouter sitemap et corriger SEO(title et description)
This commit is contained in:
29
frontend/src/hooks/usePageMeta.js
Normal file
29
frontend/src/hooks/usePageMeta.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import { useEffect } from 'react'
|
||||
|
||||
// Permet à une page de définir son propre <title>/<meta description> le
|
||||
// temps qu'elle est affichée. La SPA n'a qu'un seul index.html : sans ce
|
||||
// hook, toutes les routes partagent le même title/meta. Les valeurs
|
||||
// précédentes sont restaurées au démontage, donc quitter la page revient à
|
||||
// l'état d'avant (celui d'index.html, ou celui d'une page parente si elles
|
||||
// s'enchaînent).
|
||||
export default function usePageMeta({ title, description } = {}) {
|
||||
useEffect(() => {
|
||||
const previousTitle = document.title
|
||||
if (title) {
|
||||
document.title = title
|
||||
}
|
||||
|
||||
const metaEl = document.querySelector('meta[name="description"]')
|
||||
const previousDescription = metaEl?.getAttribute('content') ?? null
|
||||
if (description && metaEl) {
|
||||
metaEl.setAttribute('content', description)
|
||||
}
|
||||
|
||||
return () => {
|
||||
document.title = previousTitle
|
||||
if (metaEl && previousDescription !== null) {
|
||||
metaEl.setAttribute('content', previousDescription)
|
||||
}
|
||||
}
|
||||
}, [title, description])
|
||||
}
|
||||
Reference in New Issue
Block a user