Всем привет, может подскажите решение получше или попроще.
На сайте реализовано отображение страниц в модельном окне, при этом меняется URL и принудительно меняю пока что только title в head
Дело в том что в head есть еще куча всего что лучше бы поменять при открытии модельного окна, есть ли варианты как можно все это упростить и не перебирать каждый элемент.
На странице новости я формирую head отдельным компонентом
post.tsx
const Post = ({ ...props }) => {
return (
<>
<HeadComponent
title={title}
description={description}
keywords={keywords}
image={post.image}
ogTitle={ogTitle}
ogDescription={ogDescription}
ogCreditText={ogCreditText}
post={post}
/>
<div>
// Тут сам контент
</div>
</>
)
}
export default observer(Post)
HeadComponent.tsx
const HeadComponent = ({ ...props }) => {
<Head>
<title>{props.title}</title>
<meta name="description" content={props.description} />
// И т.д.
</Head>
}
При открытии модельного окна у меня есть все данные для формирования HeadComponent в обработчике при клике по ссылке
const handleClick = useCallback((e) => {
// Тут переменные со всеми нужными данными
const head = <HeadComponent
title={title}
description={description}
keywords={keywords}
image={image}
ogTitle={ogTitle}
ogDescription={ogDescription}
ogCreditText={ogCreditText}
post={post}
/>
console.log(head)
// {$$typeof: Symbol(react.element), type: {…}, key: null, ref: null, props: {…}, …}
window.history.pushState({
...window.history.state,
id: link.getAttribute("data-id"),
},
title,
link.pathname
)
context.openModal(true) // открывает модельное окно и там дальше в него подгружаются данные
}, [])
Я вот чего думаю, можно ли как то пушнуть новый head в документ?