[React] TOAST UI, Editor, Viewer

Jang Seok Woo·2022년 3월 13일
0

리액트

목록 보기
50/58

원래 React 프레임워크없이 TOAST UI View와 Editor를 적용했었다.
해당 프로젝트를 하면서 React로 바꾸고 싶어서 코드를 싹 다 갈아엎고 있다.
사실 CSS는 부트스트랩과 복사 붙여넣기가 있으니 빨리 적용 가능했지만 TOAST UI 라이브러리 적용하는 건 진짜 지옥이었다..

Editor

먼저 Editor를 보자.

Editor를 적용하는 건 매우 간단하다. (여기서 import문을 주시하자)

import '@toast-ui/editor/dist/toastui-editor.css';
import { Editor } from '@toast-ui/react-editor';

  <Editor
    initialValue="hello react editor world!"
    previewStyle="vertical"
    height="600px"
    initialEditType="markdown"
    useCommandShortcut={true}
  />

위의 코드 하나면 된다. (자세한 설명 링크)

리액트 프레임워크 없이 적용한다면

const editor = new toastui.Editor({
	el: document.querySelector('#editor'),
	previewStyle: 'vertical',
	initialEditType: "markdown",
	height: '600px',
	initialValue: content
});

위의 코드를 쓰면 된다. 거의 비슷하다.

Viewer

근데 도저히 찾아도 React에 Viewer를 적용하는 건 보이지가 않았다..

프레임워크 없이 프론트를 구현했을 때는

<link rel="stylesheet" href="https://uicdn.toast.com/editor/2.0.0/toastui-editor.min.css">
<script src="https://uicdn.toast.com/editor/2.0.0/toastui-editor-all.min.js"></script>
<script>
   // ... 생략

    const viewer = toastui.Editor.factory({
        el: document.querySelector('#viewer'),
        viewer: true,
        height: '500px',
        initialValue: content
    });

    let elem = document.getElementById('editor-hidden');
    viewer.setMarkdown(elem.innerText);
</script>

이런 식으로 코드를 짰다. 사실 저기에도 시간 좀 쏟았는데 리액트는 더더더더... 쏟았다.

다음은 성공한 코드이다.

방법 1

import { Editor } from '@toast-ui/editor';

const viewer = Editor.factory({
  	el: el,
  	viewer: true,
  	height: '500px',
  	initialValue: review.content
});

Editor와 Viewer를 적용할 때 차이점이 안 보일 것이다..

바로 import문이다
import문에서
Editor는 적용할 때는 from '@toast-ui/react-editor';에서 import하고
Viewer를 적용할 때는 '@toast-ui/editor';에서 import를 한다.

정말.. 이것때문에. . .... .몇 시간을 에러 잡고 있었다... ㅠㅠ 흑

방법 2
그런데 다른 방법도 있었다.
이건 Editor를 쓰지 않아서 동시에 Editor, Viewer를 적용할 수 있다.

import Viewer from '@toast-ui/editor/dist/toastui-editor-viewer';

const viewer = new Viewer({
	el: document.querySelector('#viewer'),
    height: '600px',
    initialValue: review.content
});

위의 코드를 적용하면 된다.

Viewer를 훨씬 쉽게 적용할 수 있는 방법을 찾았다. 너무 간단했네..ㅠㅠ

import { Viewer } from '@toast-ui/react-editor';

...
<Viewer initialValue={search.content} />
profile
https://github.com/jsw4215

0개의 댓글