#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
не отображается на стороне сервера.