SSR с Helmet также отображает асинхронные мета и контент - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь создать приложение, в котором необходимо получить данные, прежде чем отправлять реквизиты на <Helmet>, но я не знаю, возможно ли это, потому что я не вижу ничего подобного в документации.

И нет возможности показать этот контент в компоненте Шлем.Содержимое всегда empty

Компонент Helmet является компонентом HtmlPage.В приведенном ниже коде мы получаем ошибку SEO undefined.

https://github.com/nfl/react-helmet/issues/409

<HtmlPage
    {...this.props.client.info.SEO}
>

    <ThemeProvider theme={this.state.theme}>
        <div className='wrapper' id='wrapper'>

            {loading && <Loading 
                client={this.state.client}
            />}

            <div className="content" id='page-wrapper'>
                <h1>Its ok for now ====</h1>

                <p>
                    {JSON.stringify(this.props.client)}
                </p>

                <div>
                    {!!this.props.client.info &&
                        <p>{JSON.stringify(this.props.client.info.SEO)}</p>} 
                </div>
            </div>
        </div>
    </ThemeProvider>
</HtmlPage>

react-helmet-async не работает.

https://github.com/staylor/react-helmet-async

1 Ответ

0 голосов
/ 22 января 2019

Вам нужно реализовать второй renderPass, чтобы он мог собирать элементы заголовка.Я попытался react-tree-walker для этого, но это не сработало.В конце я добавил второй renderPass, используя renderToStaticMarkup.Например, `

const stream = renderToNodeStream(<App preloadedState={preloadedState} />);

// extra render pass
renderPass(<App preloadedState={preloadedState} />);

`

...