带有 Draft js 的 Nextjs - 当我使用 convertFromHTML 方法启动具有 HTML 内容的编辑器时,文档未定义
Nextjs with Draft js - document is not defined when i initiate editor with HTML content using convertFromHTML method
我想用 html 标记初始化我的编辑器状态,但我收到此错误
at renderToString (/home/al/Documents/node/admin-next/node_modules/react-dom/cjs/react-dom-server.node.development.js:3988:27)
at render (/home/al/Documents/node/admin-next/node_modules/next-server/dist/server/render.js:86:16)
at renderPage (/home/al/Documents/node/admin-next/node_modules/next-server/dist/server/render.js:211:20)
at Function.value (/home/al/Documents/node/admin-next/.next/server/static/development/pages/_document.js:925:41)
at _callee$ (/home/al/Documents/node/admin-next/.next/server/static/development/pages/_document.js:2334:78)
at tryCatch (/home/al/Documents/node/admin-next/node_modules/regenerator-runtime/runtime.js:62:40)
at Generator.invoke [as _invoke] (/home/al/Documents/node/admin-next/node_modules/regenerator-runtime/runtime.js:296:22)
at Generator.prototype.(anonymous function) [as next] (/home/al/Documents/node/admin-next/node_modules/regenerator-runtime/runtime.js:114:21)
at asyncGeneratorStep (/home/al/Documents/node/admin-next/.next/server/static/development/pages/_document.js:352:24)
这是我从 复制的代码。当我用内容初始化 editorState 时出错。
const blocksFromHTML = convertFromHTML(
"<p>Hey this <strong>editor</strong> rocks </p>"
);
const content = ContentState.createFromBlockArray(
blocksFromHTML.contentBlocks,
blocksFromHTML.entityMap
);
const [editorState, setEditorState] = useState(
EditorState.createWithContent(content)
);
import React, { useState } from "react";
import {
Editor,
EditorState,
RichUtils,
getDefaultKeyBinding,
ContentState,
convertFromHTML
} from "draft-js";
import "./RichTextEditor.css";
import "draft-js/dist/Draft.css";
const MinimumRequirements = () => {
const blocksFromHTML = convertFromHTML(
"<p>Hey this <strong>editor</strong> rocks </p>"
);
const content = ContentState.createFromBlockArray(
blocksFromHTML.contentBlocks,
blocksFromHTML.entityMap
);
const [editorState, setEditorState] = useState(
EditorState.createWithContent(content)
);
const onChangeHandler = (editorState) => setEditorState(editorState);
return (
<div className="RichEditor-root">
<Editor
blockStyleFn={getBlockStyle}
customStyleMap={styleMap}
handleKeyCommand={handleKeyCommand}
keyBindingFn={mapKeyToEditorCommand}
onChange={onChangeHandler}
placeholder="Create pc requirements..."
/>
</div>
);
};
export default MinimumRequirements;
我仍然收到此错误。谁能帮帮我?
编辑:我的代码现在可以工作了,但我不知道为什么而且我没有对此代码进行更改?恐怕我会在生产中出错。
见https://github.com/facebook/draft-js/issues/1361:
convertFromHTML is not expected to be implemented for the server. I copied the information provided in that url to solve this for server side rendering
作者还附上了安装NPM包的解决方案jsdom.
我想用 html 标记初始化我的编辑器状态,但我收到此错误
at renderToString (/home/al/Documents/node/admin-next/node_modules/react-dom/cjs/react-dom-server.node.development.js:3988:27)
at render (/home/al/Documents/node/admin-next/node_modules/next-server/dist/server/render.js:86:16)
at renderPage (/home/al/Documents/node/admin-next/node_modules/next-server/dist/server/render.js:211:20)
at Function.value (/home/al/Documents/node/admin-next/.next/server/static/development/pages/_document.js:925:41)
at _callee$ (/home/al/Documents/node/admin-next/.next/server/static/development/pages/_document.js:2334:78)
at tryCatch (/home/al/Documents/node/admin-next/node_modules/regenerator-runtime/runtime.js:62:40)
at Generator.invoke [as _invoke] (/home/al/Documents/node/admin-next/node_modules/regenerator-runtime/runtime.js:296:22)
at Generator.prototype.(anonymous function) [as next] (/home/al/Documents/node/admin-next/node_modules/regenerator-runtime/runtime.js:114:21)
at asyncGeneratorStep (/home/al/Documents/node/admin-next/.next/server/static/development/pages/_document.js:352:24)
这是我从
const blocksFromHTML = convertFromHTML(
"<p>Hey this <strong>editor</strong> rocks </p>"
);
const content = ContentState.createFromBlockArray(
blocksFromHTML.contentBlocks,
blocksFromHTML.entityMap
);
const [editorState, setEditorState] = useState(
EditorState.createWithContent(content)
);
import React, { useState } from "react";
import {
Editor,
EditorState,
RichUtils,
getDefaultKeyBinding,
ContentState,
convertFromHTML
} from "draft-js";
import "./RichTextEditor.css";
import "draft-js/dist/Draft.css";
const MinimumRequirements = () => {
const blocksFromHTML = convertFromHTML(
"<p>Hey this <strong>editor</strong> rocks </p>"
);
const content = ContentState.createFromBlockArray(
blocksFromHTML.contentBlocks,
blocksFromHTML.entityMap
);
const [editorState, setEditorState] = useState(
EditorState.createWithContent(content)
);
const onChangeHandler = (editorState) => setEditorState(editorState);
return (
<div className="RichEditor-root">
<Editor
blockStyleFn={getBlockStyle}
customStyleMap={styleMap}
handleKeyCommand={handleKeyCommand}
keyBindingFn={mapKeyToEditorCommand}
onChange={onChangeHandler}
placeholder="Create pc requirements..."
/>
</div>
);
};
export default MinimumRequirements;
我仍然收到此错误。谁能帮帮我?
编辑:我的代码现在可以工作了,但我不知道为什么而且我没有对此代码进行更改?恐怕我会在生产中出错。
见https://github.com/facebook/draft-js/issues/1361:
convertFromHTML is not expected to be implemented for the server. I copied the information provided in that url to solve this for server side rendering
作者还附上了安装NPM包的解决方案jsdom.