[javascript] Draft.js에서 텍스트 에디터의 맞춤법 검사 기능 구현하기

맞춤법 검사는 텍스트 에디터에서 매우 유용한 기능입니다. 사용자가 작성한 텍스트의 오타나 문법 오류를 식별하고 표시하여 품질을 향상시킬 수 있습니다. 이번 블로그 포스트에서는 Draft.js에서 텍스트 에디터의 맞춤법 검사 기능을 구현하는 방법에 대해 알아보겠습니다.

1. 맞춤법 검사 라이브러리 선택하기

맞춤법 검사 기능을 구현하기 위해서는 먼저 맞춤법 검사를 수행할 수 있는 라이브러리를 선택해야 합니다. 자바스크립트 환경에서 맞춤법 검사를 제공하는 여러 라이브러리가 있지만, 이번 예시에서는 spellchecker 라이브러리를 사용하겠습니다. spellchecker는 영어를 기준으로 맞춤법 검사를 수행할 수 있는 라이브러리입니다.

2. Draft.js 에디터 설정하기

맞춤법 검사 기능을 구현하기 위해 먼저 Draft.js 에디터를 설정해야 합니다. 아래는 간단한 Draft.js 에디터의 설정 예시입니다.

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

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

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

  return (
    <Editor editorState={editorState} onChange={handleEditorChange} />
  );
};

export default MyEditor;

3. 맞춤법 검사 기능 구현하기

Draft.js 에디터에서 맞춤법 검사 기능을 구현하기 위해선 spellchecker 라이브러리를 사용하여 텍스트의 오타를 찾고 표시해야 합니다. 이를 위해 spellchecker 라이브러리의 checkSpelling 메소드를 사용할 수 있는데, 이 메소드는 오타가 있는 단어를 배열로 반환합니다.

import spellchecker from 'spellchecker';

const checkSpelling = (text) => {
  const words = text.split(' ');

  const misspelledWords = words.filter((word) => !spellchecker.checkSpelling(word));

  return misspelledWords;
};

위의 코드는 텍스트를 받아들여 단어별로 분리한 후, spellchecker.checkSpelling 메소드를 사용하여 맞춤법 오류가 있는지 확인합니다. 오류가 있는 단어는 misspelledWords 배열에 저장되고, 이를 반환합니다.

4. 에디터에 맞춤법 검사 기능 적용하기

이제 맞춤법 검사 기능을 에디터에 적용해보겠습니다. handleEditorChange 함수 내에서 텍스트가 변경될 때마다 맞춤법 검사를 수행하고, 오류가 있는 단어들을 표시할 수 있습니다.

const handleEditorChange = (newEditorState) => {
  const contentState = newEditorState.getCurrentContent();
  const text = contentState.getPlainText();

  const misspelledWords = checkSpelling(text);

  // 오류가 있는 단어들을 표시
  const newContentState = misspelledWords.reduce((contentState, word) => {
    const start = text.indexOf(word);
    const end = start + word.length;

    const selection = SelectionState.createEmpty().merge({
      anchorOffset: start,
      focusOffset: end,
    });

    const newInlineStyle = contentState.createEntity('SPELLCHECK_ERROR', 'MUTABLE', {
      background: 'yellow',
    });

    const entityKey = newInlineStyle.getLastCreatedEntityKey();

    return Modifier.applyEntity(contentState, selection, entityKey);
  }, contentState);

  setEditorState(EditorState.push(newEditorState, newContentState, 'spellcheck'));
};

위의 코드는 handleEditorChange 함수 내에서 checkSpelling 함수를 사용하여 오류가 있는 단어들을 찾고, 해당 단어들에 대한 스타일을 변경하여 표시합니다. 이를 위해 Draft.js의 Modifier.applyEntity 메소드를 사용합니다.

마무리

이제 Draft.js에서 텍스트 에디터의 맞춤법 검사 기능을 구현하는 방법에 대해 알아보았습니다. 이를 통해 사용자가 작성한 텍스트의 품질을 향상시킬 수 있습니다. 적절한 맞춤법 검사 라이브러리를 선택하고, Draft.js 에디터에 적용하여 맞춤법 오류를 찾고 표시하는 방법을 익혀보세요.

참고자료