[javascript] Draft.js를 이용한 텍스트 에디터의 배경음악 추가하기

Draft.js는 React 기반의 텍스트 에디터 라이브러리로, 다양한 기능을 커스터마이징할 수 있습니다. 이번 글에서는 Draft.js를 사용하여 텍스트 에디터에 배경음악을 추가하는 방법을 알아보겠습니다.

1. 음악 파일 추가하기

먼저, 사용할 배경음악 파일을 프로젝트에 추가해야 합니다. 일반적으로 MP3나 WAV 형식의 음악 파일을 사용하며, public 폴더나 assets 폴더에 저장하는 것이 일반적입니다.

2. Draft.js 에디터 구성하기

다음으로, Draft.js 에디터를 구성해야 합니다. npm install draft-js 명령을 사용하여 Draft.js를 설치한 후, 컴포넌트 내에서 에디터를 렌더링할 수 있습니다.

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

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

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

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

export default TextEditor;

위 예시에서는 TextEditor 컴포넌트를 생성하여 useState 훅을 이용해 에디터의 상태를 관리하고, Editor 컴포넌트를 사용하여 실제 에디터를 렌더링하고 있습니다.

3. 배경음악 컨트롤러 추가하기

이제 배경음악을 컨트롤할 수 있는 컴포넌트를 추가해보겠습니다. 예를 들어, 플레이/일시정지 버튼과 볼륨 조절 슬라이더를 사용하여 배경음악을 제어하는 UI를 만들어볼 수 있습니다. 이 컴포넌트를 TextEditor 컴포넌트 내에 추가합니다.

const AudioController = ({ onPlay, onPause, onVolumeChange }) => {
  return (
    <div>
      <button onClick={onPlay}>Play</button>
      <button onClick={onPause}>Pause</button>
      <input
        type="range"
        min="0"
        max="100"
        onChange={onVolumeChange}
      />
    </div>
  );
};

const TextEditor = () => {
  // ...
  const handlePlay = () => {
    // 배경음악 재생 코드 작성
  };

  const handlePause = () => {
    // 배경음악 일시정지 코드 작성
  };

  const handleVolumeChange = (event) => {
    const volume = event.target.value;
    // 볼륨 조절 코드 작성
  };

  return (
    <div>
      <Editor editorState={editorState} onChange={handleChange} />
      <AudioController
        onPlay={handlePlay}
        onPause={handlePause}
        onVolumeChange={handleVolumeChange}
      />
    </div>
  );
};

위 예시에서는 AudioController 컴포넌트를 정의하여 Play 버튼과 Pause 버튼을 클릭할 때 동작할 핸들러 함수를 전달하고 있습니다. onVolumeChange 핸들러 함수는 볼륨 슬라이더의 값이 변경될 때 호출되는 함수입니다.

4. 배경음악 재생 기능 추가하기

마지막으로, 배경음악을 재생하는 기능을 구현해보겠습니다. TextEditor 컴포넌트에서 Audio 요소를 사용하여 배경음악을 추가하고, handlePlay, handlePause, handleVolumeChange 함수를 구현하여 배경음악을 제어합니다.

const TextEditor = () => {
  // ...
  const handlePlay = () => {
    const audioElem = document.getElementById('background-music');
    audioElem.play();
  };

  const handlePause = () => {
    const audioElem = document.getElementById('background-music');
    audioElem.pause();
  };

  const handleVolumeChange = (event) => {
    const volume = event.target.value;
    const audioElem = document.getElementById('background-music');
    audioElem.volume = volume / 100;
  };

  return (
    <div>
      <Editor editorState={editorState} onChange={handleChange} />
      <AudioController
        onPlay={handlePlay}
        onPause={handlePause}
        onVolumeChange={handleVolumeChange}
      />
      <audio id="background-music" src="/path/to/background-music.mp3" />
    </div>
  );
};

위 예시에서 /path/to/background-music.mp3 부분에는 실제 배경음악 파일의 경로를 명시해야 합니다.

마무리

이제 Draft.js를 사용한 텍스트 에디터에 배경음악을 추가하는 방법을 알아보았습니다. 원하는 음악 파일을 추가하고, 에디터와 배경음악을 함께 제어할 수 있는 컨트롤러를 구현하세요. 이를 통해 사용자들은 텍스트를 작성하는 동안 배경음악을 즐길 수 있습니다.

참고 자료