Используйте SurveyJS вместе с Nextjs

#reactjs #next.js #surveyjs

#reactjs #next.js #surveyjs

Вопрос:

Поскольку knows NextJS использует рендеринг на стороне сервера, я хочу использовать SurveyJs его, но surveyJS использует некоторую функцию, которая должна выполняться на стороне клиента. В моем случае я хочу использовать StylesManager.applyTheme , но он выдает ошибку сервера ReferenceError: document is not defined

любой возможный способ, который я могу использовать для выполнения applyTheme функции на стороне клиента?

Ответ №1:

Вы можете добиться этого, создав перехват useEffect, который использует внешнюю функцию для применения этой темы:

 import {useEffect} from 'react'

useEffect(() => {
  const newSurveyCreator = new SurveyJSCreator.SurveyCreator('surveyCreatorContainer', surveyCreatorConfig);
  
  newSurveyCreator.saveSurveyFunc = function() {
    console.log(this);
    console.log(this amp;amp; this.text);
  };
    
  updateSurveyCreator(newSurveyCreator);

}, []);
 

Комментарии:

1. Я просто выполнил StylesManager.applyTheme функцию внутри useEffect хука, и она сработала.

Ответ №2:

Для лучшей реализации я решил проблему, используя динамический импорт из NextJs

Вместо этого я импортировал свой SurveyComponent , как это:

 const SurveyComponent = dynamic(
  () => import("../../../../components/survey/PartOne"),
  {
    ssr: false,
  }
);
 

Чтобы убедиться, что my SurveyComponent не отображается на стороне сервера.