Я не могу точно понять, что происходит в моем коде.
Я использую базовую маршрутизацию из NextJS со страницами в папке pages для доставкистраниц моего приложения, и эти страницы оборачиваются тривиальным компонентом высокого порядка страниц.
const Page = (PageContent, PageTitle) => {
PageTitle = PageContent.name
return (
class PageHoC extends React.Component {
static contextType = GlobaleContext
static propTypes = {
PageTitle: PropTypes.string,
}
static async getInitialProps () {
return {PageTitle}
}
componentDidMount () {
const {state, dispatch} = this.context
let {darkFilter} = state
darkFilter = false
dispatch({type: 'unset_filter', payload: {darkFilter}})
}
render () {
let {PageTitle} = this.props
const {state} = this.context
let {darkFilter} = state
return (
<>
<Head>
<title>
Page Title - {PageTitle}
</title>
{darkFilter ? <style>{` html { background-color: black; transition-duration: 1.2s; }
`}</style> : <style>{`
html { background-color: white; transition-duration: 1.2s; }
`}</style>}
</Head>
<Layout>
<PageContent PageTitle={PageTitle} />
</Layout>
</>
)
}
}
)
}
И хотя это работает с "npm run dev", с SSR.Page HoC эффективно переносит имя из своего дочернего функционального компонента в мою голову, поэтому я получаю правильный PageTitle.
Но когда я экспортирую свой сайт на статическую страницу с помощью "npm run build" или "export"Стандарт NextJS conf, High-o-comp страницы срабатывает только один раз при загрузке страницы, если вы делаете новый HTTP-запрос.
Я имею в виду.Когда я перемещаюсь по страницам с компонентом Link из NextJS, я полностью теряю реквизиты PageTitle, полученные от моего High-o-comp.
TL; DR: HoC срабатывает по запросу http.Нет на странице навигации по ссылке.
Любая помощь?:( Я чувствую, что мне чего-то не хватает ни в HoC, ни в статическом экспорте.