[javascript] Draft.js의 목록 기능 활용하기
Draft.js는 JavaScript로 작성된 리액트 기반의 텍스트 에디터 라이브러리입니다. 이 라이브러리를 활용하면 웹 애플리케이션에서 강력한 텍스트 편집 기능을 구현할 수 있습니다.
이번 포스트에서는 Draft.js의 목록 기능을 활용하는 방법에 대해 알아보겠습니다.
목록 기능 구현
Draft.js에서 목록 기능을 구현하기 위해서는 목록에 해당하는 부분의 스타일과 구조를 정의해야 합니다. 이를 위해 Draft.js에서 제공하는 ContentBlock
과 BlockRenderMap
을 사용하면 목록 요소를 자유롭게 커스텀할 수 있습니다.
아래는 순서가 있는 목록을 생성하는 예제 코드입니다.
import { Editor, EditorState, RichUtils, ContentBlock } from 'draft-js';
class MyEditor extends React.Component {
constructor(props) {
super(props);
this.state = { editorState: EditorState.createEmpty() };
this.onChange = this.onChange.bind(this);
this.handleKeyCommand = this.handleKeyCommand.bind(this);
this.getBlockStyle = this.getBlockStyle.bind(this);
}
onChange(editorState) {
this.setState({ editorState });
}
handleKeyCommand(command) {
const newState = RichUtils.handleKeyCommand(this.state.editorState, command);
if (newState) {
this.onChange(newState);
return 'handled';
}
return 'not-handled';
}
getBlockStyle(contentBlock) {
const type = contentBlock.getType();
if (type === 'ordered-list-item') {
return 'my-ordered-list-item';
}
return null;
}
render() {
return (
<div>
<Editor
editorState={this.state.editorState}
onChange={this.onChange}
handleKeyCommand={this.handleKeyCommand}
blockStyleFn={this.getBlockStyle}
/>
</div>
);
}
}
위 코드에서 my-ordered-list-item
스타일을 지정한 getBlockStyle
함수를 통해 순서가 있는 목록 형식을 정의했습니다. 이 함수에서는 contentBlock.getType()
을 사용하여 현재 블록의 타입을 확인하고, 그에 따라 스타일을 지정할 수 있습니다.
결과 확인하기
위 예제 코드를 실행하면 에디터에 순서가 있는 목록을 입력할 수 있는 기능이 추가됩니다. 사용자는 목록 기능을 활용하여 순서가 있는 목록을 편집하고 스타일을 지정할 수 있습니다.
마무리
이번 포스트에서는 Draft.js의 목록 기능을 활용하는 방법에 대해 알아보았습니다. 목록 기능을 통해 웹 애플리케이션에서 텍스트 편집을 더욱 효율적으로 구현할 수 있습니다. 자세한 내용은 Draft.js 공식 문서를 참고하여 실제로 적용해보시기 바랍니다.