Как исключить интерком-скрипты из предреагирования с мгновенной привязкой
Я хочу исключить межкомпонентные скрипты (JS и CSS, я думаю, но это 400КБ станифицированного кода) из сборки prerender с быстрым реагированием.
Все остальные скрипты уже исключены, но Интерком не может и нарушает мой предварительный просмотр и SEO и делает предварительно обработанные скрипты намного больше, чем нужно.
Я установил параметр исключения в package.json с помощью:
"ReactionSnap": {
"destination": "build/pre-rendered",
"removeScriptTags": true
}, и это исключает все остальные сценарии.
Интерком загружен либо в index.html:
window.intercomSettings = {app_id: 'APP_ID'};(function () {var w = window; var ic = w.Intercom; if (typeof ic === "function") {ic ('reattach_activator'); ic ('update', w.intercomSettings);} else { var d = document; var i = function () {ic(arguments);};iq=[];ic=function(args){iqpush (args);}; w.Intercom = i; var l = function () {var s = d.createElement ('script'); s.type = 'text / javascript'; s.async = true; s.src = ' https://widget.intercom.io/widget/' + 'APP_ID '; var x = d.getElementsByTagName (' script ') [0]; x.parentNode.insertBefore (s, x);}; if (w.attachEvent) {w.attachEvent (' onload ', l);} else {w.addEventListener ('нагрузки', л, ложь);}}})();
или компонент домофона в подкомпоненте через: > Интерком appID= 'APP_ID'/>
Любая помощь будет высоко ценится - спасибо
2 ответа
@adevine это также работает, если вы хотите избежать рендеринга определенных элементов, спасибо!
const Component = () => {
const isSnap = navigator.userAgent === 'ReactSnap'
return (
<div className="main">
<>
{ !isSnap && <ComponentToKeepDynamic /> }
</>
</div>
);
};
export default Component;
У меня была такая же проблема. Вы можете обнаружить предварительный рендеринг, посмотрев на пользовательский агент:
function isPreRendering() {
return navigator.userAgent === 'ReactSnap';
};
Затем просто поместите весь свой сценарий выше в if (!isPreRendering)
блок.