Web Dev/3. React 관련

React컴포넌트에서 HTMLElement contentEditable 속성 사용하기

hYhY1234 2021. 5. 27. 14:31
728x90

const EditableBlock = ({ block }) => {
  return (
    <div key={block.id} contentEditable={true}>
      {block.contents}
    </div>
  );
};

export default EditableBlock;

React에서 위와 같이 사용하면 난리를 친다. 그래서 react-contenteditable 라이브러리를 활용할 수 있다. 

 

https://www.npmjs.com/package/react-contenteditable

 

react-contenteditable

React component representing an element with editable contents

www.npmjs.com

yarn add react-contenteditable

 

 

아래와 같이 사용할 수 있다. 

import ContentEditable from "react-contenteditable";
import { useState, useRef } from "react";

const EditableBlock = ({ block }) => {
  console.log("block", block);
  const [state, setState] = useState({ html: block.contents, tagName: "div" });
  const ref = useRef();

  return (
    <ContentEditable
      innerRef={ref}
      html={state.html}
      disabled={false}
      onChange={(e) => setState((prev) => ({ ...prev, html: e.target.value }))}
    />
  );
};

export default EditableBlock;