import React, { createContext, useContext, useEffect, useState } from 'react'; import { Helmet } from 'react-helmet'; interface DocumentTitleContextProps { title?: any; setTitle?: (title?: any) => void; } export const DocumentTitleContext = createContext({ title: null, setTitle() {}, }); export const DocumentTitleProvider: React.FC<{ addonBefore?: string; addonAfter?: string }> = (props) => { const { addonBefore, addonAfter } = props; const [title, setTitle] = useState(''); const documentTitle = `${addonBefore ? ` - ${addonBefore}` : ''}${title || ''}${ addonAfter ? ` - ${addonAfter}` : '' }`; return ( {documentTitle} {props.children} ); }; export const useDocumentTitle = () => { return useContext(DocumentTitleContext); }; export const useCurrentDocumentTitle = (title: string) => { const { setTitle } = useDocumentTitle(); useEffect(() => { setTitle(title); }, []); };