Как организовать ssr в react.js для отдельных компонентов на странице?

Пользователь

от aubree , в категории: JavaScript , год назад

Как организовать ssr в react.js для отдельных компонентов на странице?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от stephania , 10 месяцев назад

@aubree 

Пользователь

от akeem , 8 дней назад

@aubree 

Server-side rendering (SSR) в React.js можно организовать для отдельных компонентов на странице следующим образом:

  1. Создайте специальный компонент (например, AppWithSSR) для отрисовки компонента с помощью SSR.
  2. В компоненте AppWithSSR используйте метод ReactDOMServer.renderToString для преобразования компонента в HTML строку.
  3. Передайте эту HTML строку в главный компонент вашего приложения (например, App), который будет отображаться на странице.
  4. Оберните компонент App в другой компонент, который будет запускать SSR только для определенных дочерних компонентов (например, SSRComponent).
  5. Передайте в AppWithSSR только те компоненты, которые нужно рендерить с помощью SSR.


Пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// AppWithSSR.js
import React from 'react';
import ReactDOMServer from 'react-dom/server';

const AppWithSSR = ({ component }) => {
  const htmlString = ReactDOMServer.renderToString(component);
  return <div dangerouslySetInnerHTML={{ __html: htmlString }} />;
};

export default AppWithSSR;

// SSRComponent.js
import React from 'react';
import AppWithSSR from './AppWithSSR'

const SSRComponent = ({ component }) => {
  return <AppWithSSR component={component} />;
};

export default SSRComponent;

// App.js
import React from 'react';
import SSRComponent from './SSRComponent';
import ComponentToSSR from './ComponentToSSR';

const App = () => {
  return (
    <div>
      <h1>App with SSR</h1>
      <SSRComponent component={<ComponentToSSR />} />
      {/* Other components not rendered with SSR */}
    </div>
  );
};

export default App;


Теперь компонент ComponentToSSR будет отрисовываться с помощью SSR, в то время как остальные компоненты будут рендериться обычным способом на клиенте.