首页 > 解决方案 > toast 编辑器 getHTML() 最大堆栈错误

问题描述

目前我正在使用 React 和 Next.js,由于韩语错误,我想应用 Toast Editor ui 而不是 Froala Editor。Tui 编辑器不支持 SSR,所以我已经从 Next.js 应用了动态导入。

但是,当我将 tui 编辑器的内容转换为 HTML 格式时,我遇到了 getHTML() 最大调用堆栈错误。getMarkdown() 目前完美运行。

以下是代码。

// path: components/WrappedToastEditor.js
import React from 'react'
import PropTypes from 'prop-types'
import { Editor } from '@toast-ui/react-editor'

const WrappedEditor = (props) => {
  const { forwardedRef } = props
  return <Editor {...props} ref={forwardedRef} />
}

WrappedEditor.propTypes = {
  forwardedRef: PropTypes.shape({
    current: PropTypes.instanceOf(Element)
  }).isRequired
}

export default WrappedEditor;
// path: components/ToastEditorComponent.js
import React, {forwardRef, useRef, useCallback } from 'react';
import dynamic from 'next/dynamic';

const Editor = dynamic(() => import("./WrappedToastEditor"), { ssr: false });
const EditorWithForwardedRef = forwardRef((props, ref) => (
  <Editor {...props} forwardedRef={ref} />
));

const ToastEditorComponent = (props) => {
  const editorRef = useRef(null);
  const handleChange = useCallback(() => {
    if (!editorRef.current) {
      return;
    }

    //! getHTML() maximum call stack error. need to figure out how to fix
    // console.log(editorRef.current.getInstance().getHTML())
    // This is the part that has a maximum call stack error
    const value = editorRef.current.getInstance().getHTML();
    props.onChange(value);
  }, [props, editorRef]);

  return <div>
    <EditorWithForwardedRef
      {...props}
      previewStyle="vertical"
      height="600px"
      initialEditType="wysiwyg"
      useCommandShortcut={true}
      ref={editorRef}
      onChange={handleChange}
      hideModeSwitch={true}
    />
  </div>;
};

export default ToastEditorComponent;

标签: reactjsfroalatui

解决方案


推荐阅读