Используя электрод, я заметил это странное поведение -
Когда я просматриваю источник страницы после полной загрузки страницы со всеми вызовами API и данными, я могу просматривать только статический контент, напримергиперссылки, заголовки, ссылки нижнего колонтитула и т. д.
Я создал собственный обработчик токенов, который проверяет объект context
и заполняет пользовательские токены, присутствующие в index.html
.Таким образом, всякий раз, когда я console.log(context.user.content)
, регистрируются только статические данные, такие как гиперссылки, заголовки, ссылки нижнего колонтитула.
Я полагаю, что это проблема, но я не могу обернуться, чтобы понять, почему электрод не распознает содержимое, отображаемое динамически.
Файл Token-Handler.js
import Helmet from 'react-helmet';
const emptyTitleRegex = /<title[^>]*><\/title>/;
module.exports = function setup(options) {
// console.log({ options });
return {
INITIALIZE: context => {
context.user.helmet = Helmet.renderStatic();
},
PAGE_TITLE: context => {
const helmet = context.user.helmet;
const helmetTitleScript = helmet.title.toString();
const helmetTitleEmpty = helmetTitleScript.match(emptyTitleRegex);
return helmetTitleEmpty ? `<title>${options.routeOptions.pageTitle}</title>` : helmetTitleScript;
},
REACT_HELMET_SCRIPTS: context => {
const scriptsFromHelmet = ["link", "style", "script", "noscript"]
.map(tagName => context.user.helmet[tagName].toString())
.join("");
return `<!--scripts from helmet-->${scriptsFromHelmet}`;
},
META_TAGS: context => {
console.log(context,'123') //this is where I am checking
return context.user.helmet.meta.toString();
}
};
};
default.js
module.exports = {
port: portFromEnv() || "3000",
webapp: {
module: "electrode-react-webapp/lib/express",
options: {
prodBundleBase: '/buy-used-car/js/',
insertTokenIds: false,
htmlFile: "./{{env.APP_SRC_DIR}}/client/index.html",
paths: {
"*": {
content: {
module: "./{{env.APP_SRC_DIR}}/server/views/index-view"
},
}
},
serverSideRendering: true,
tokenHandler: "./{{env.APP_SRC_DIR}}/server/token-handler"
}
}
};
Любая подсказка кого-либо?
РЕДАКТИРОВАТЬ 1
Однако любые последующие обновления, которые происходят в метатегах, отображаются.Я не уверен, что это то, что допускает электрод, или является функцией react-helmet
.
РЕДАКТИРОВАТЬ 2
SSR включен в электроде.