[javascript] Draft.js를 이용한 실시간 텍스트 편집 기능 구현하기

이번 포스트에서는 JavaScript의 라이브러리인 Draft.js를 이용하여 실시간 텍스트 편집 기능을 구현하는 방법에 대해 알아보겠습니다.

Draft.js란?

Draft.js는 Facebook에서 개발한 오픈 소스 라이브러리로, Rich Text Editor를 구현할 수 있는 기능을 제공합니다. React 기반으로 작성되어 있으며, 사용자가 텍스트를 편집하고 스타일을 적용할 수 있는 다양한 기능을 제공합니다.

단계별 구현 방법

1. 프로젝트 설정 및 필요한 패키지 설치

먼저 프로젝트를 설정하고 필요한 패키지를 설치해야 합니다. npm을 사용한다면 아래의 명령어를 터미널에 입력합니다.

npm init
npm install react react-dom draft-js

2. Draft.js 에디터 컴포넌트 생성하기

이제 Draft.js 에디터 컴포넌트를 생성해보겠습니다. 다음과 같이 코드를 작성합니다.

import React, { useState } from 'react';
import { Editor, EditorState } from 'draft-js';

function TextEditor() {
  const [editorState, setEditorState] = useState(() =>
    EditorState.createEmpty()
  );

  const handleEditorChange = (newEditorState) => {
    setEditorState(newEditorState);
  };

  return (
    <div>
      <h1>텍스트 편집기</h1>
      <Editor editorState={editorState} onChange={handleEditorChange} />
    </div>
  );
}

export default TextEditor;

3. 에디터 컴포넌트를 사용하는 곳에서 렌더링

이제 텍스트 편집기를 사용하고 싶은 곳에서 위에서 만든 TextEditor 컴포넌트를 렌더링해줍니다.

import React from 'react';
import TextEditor from './TextEditor';

function App() {
  return (
    <div>
      <h1>텍스트 편집기 예제</h1>
      <TextEditor />
    </div>
  );
}

export default App;

이제 App 컴포넌트를 사용하는 곳에서는 텍스트 편집기가 렌더링되게 됩니다.

4. 추가 기능 구현하기

실시간 편집 기능을 위해선 handleEditorChange 함수에서 에디터의 변화가 있을 때마다 해당 내용을 서버로 업데이트 해줘야 합니다. 이 부분은 서버와 통신하는 방식에 따라 구현이 달라질 수 있습니다. 예를 들어, WebSocket을 사용하여 실시간으로 동기화를 구현할 수도 있습니다.

마치며

이번 포스트에서는 Draft.js를 이용하여 실시간 텍스트 편집 기능을 구현하는 방법에 대해 알아보았습니다. Draft.js는 다양한 텍스트 편집 기능의 제공으로 개발자들에게 많은 편의를 제공합니다. 참고 문서와 예제를 통해 더 많은 기능과 활용 방법을 알아보시기 바랍니다.

참고 문서