Как разрешить ошибку несоответствия гидратации React, чтобы сторонний JavaScript через теги <Script> в CKEDitor HTML-конJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Как разрешить ошибку несоответствия гидратации React, чтобы сторонний JavaScript через теги <Script> в CKEDitor HTML-кон

Сообщение Anonymous »

Следующий код третьей стороны записан в редакторе CK в Drupal в режиме Source: < /p>

Код: Выделить всё

window.page = 'gidd';




< /code>
Теперь, в следующем компоненте React мы показываем сторонние данные, то есть хорошо на переднем крае: < /p>
import { graphql } from "gatsby";
import React from "react";
import { Col, Container, Row } from "react-bootstrap";
import ExtractRichText from "../../molecules/ExtractRichText";
import "./database.scss";
import Seo from "../../atoms/seo";

const DatabasePage = ({ data }) => {
return (




{/*  */}
dangerouslySetInnerHTML={{
__html: data.nodeDatabasePage.body.value,
}}
/>




);
};

export default DatabasePage;

export const pageQuery = graphql`
query ($id: String!) {
nodeDatabasePage(id: { eq: $id }) {
title
body {
value
}
field_meta_tags {
description
keywords
}
path {
alias
}
relationships {
field_metatag_image {
url
}
}
}
}
`;

export const Head = ({ data }) => (

);
< /code>
Теперь мы изменили приведенный выше компонент на следующее: < /p>
import { graphql } from "gatsby";
import React from "react";
import { Col, Container, Row } from "react-bootstrap";
import ExtractRichText from "../../molecules/ExtractRichText";
import "./database.scss";
import Seo from "../../atoms/seo";

const DatabasePage = ({ data }) => {
return (









);
};

export default DatabasePage;

export const pageQuery = graphql`
query ($id: String!) {
nodeDatabasePage(id: { eq: $id }) {
title
body {
value
}
field_meta_tags {
description
keywords
}
path {
alias
}
relationships {
field_metatag_image {
url
}
}
}
}
`;

export const Head = ({ data }) => (

);
Мы использовали extractrichtext компонент, который направляет анализ кода и визуализации в фронта.

Код: Выделить всё

import * as React from "react";
import parse from "html-react-parser";
import { useFileFile } from "../../hooks/useFileFile";
import { useMediaFileFile } from "../../hooks/useMediaFileFile";
import "./extractRichText.scss"
export const ExtractRichText = ({ richText, extraClasses }) =>  {
const drupalIDs = useFileFile().map((e) => e?.node?.drupal_id);
const allFiles = useFileFile().map((e) => e?.node);
const allMediafiles = useMediaFileFile().map((e) => e?.node);
let body = "";
if (richText) {
body = extractImage(drupalIDs, richText, extraClasses, allFiles, allMediafiles);
}
return {body};
};
function extractImage(drupalIDs, body, extraClasses, allFiles, allMediafiles) {
return parse(body, {
transform: (node) => {
if (node.type === "img" || node.type === "drupal-entity" || node.type === "drupal-media") {
const currentFile = allFiles.find((file) => node.props["data-entity-uuid"] === file?.drupal_id);
let imageUrl = currentFile?.publicUrl;
let mediaUrl;
let alt;
if (node.type === "drupal-media") {
const currentMedia = allMediafiles.find((media) => node.props["data-entity-uuid"] === media?.drupal_id);
mediaUrl = currentMedia?.relationships?.field_media_image?.publicUrl;
alt = currentMedia?.field_media_image?.alt;
}
const imgAlign = node.props["data-align"] || "";
const height = node.props["height"];
const width = node.props["width"];
let src = imageUrl || mediaUrl || node.props["src"];
if (src === node.props["src"]) {
const isRelative = !/^https?:\/\//i.test(src);
if (isRelative) {
const base = process.env.GATSBY_DRUPAL_URL.replace(/\/+$/, '');
const path = src.replace(/^\/+/, '');
src = `${base}/${path}`;
}
}
const imgStyles = {};
if (width) {
imgStyles.width = `${width}px !important`;
} else {
// imgStyles.width = `100%`;
}
if (height) {
imgStyles.height = `auto`;
} else {
// imgStyles.height = `100%`;
}
return (

[img]{`${src}`}


);
}
if (node.type === 'a' && node.props["data-entity-type"] === 'file') {
const currentFile = allFiles.find((file) => node.props["data-entity-uuid"] === file?.drupal_id);
const href = node.props["href"] || "";
const fallbackImage = process.env.GATSBY_DRUPAL_URL + href;
return (
[url={`${currentFile?.url || fallbackImage}`}
target={`${node.props[]{`${node.props["children"] || "Link"}`}[/url]
);
}
return node;
},
});
}
export default ExtractRichText;
Но после использования extractrichtext в DatabasePage компонент мы получаем следующие ошибки времени выполнения, а сторонние данные также не показываются:

Код: Выделить всё

throw new Error('Text content does not match server-rendered HTML.');
throw new Error('Hydration failed because the initial UI does not match what was ' + 'rendered on the server.');
var recoverableError = createCapturedValueAtFiber(new Error('There was an error while hydrating. Because the error happened outside ' + 'of a Suspense boundary, the entire root will switch to ' + 'client rendering.'), workInProgress);
Как исправить их выше ошибки и убедиться, что данные сторонних данных оно редко становятся на переднем крае?

Подробнее здесь: https://stackoverflow.com/questions/795 ... vascript-v
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Script Script Script Script Script
    Anonymous » » в форуме Javascript
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Как разрешить ошибку несоответствия гидратации React, чтобы донести сторонние данные, сброшенные из тега сценария?
    Anonymous » » в форуме Javascript
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Как настроить цветовую палитру CKEditor 5 в Strapi 4 с помощью @ckeditor/strapi-plugin-ckeditor 0.0.10
    Anonymous » » в форуме Javascript
    0 Ответы
    63 Просмотры
    Последнее сообщение Anonymous
  • Google Cloud Scheduler не может найти Script Script Script Script Cloud Run aname lobname
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Google Cloud Scheduler не может найти Script Script Script Script Cloud Run aname lobname
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Javascript»