dynamic import를 해주면 해결된다.
import dynamic from "next/dynamic";
interface Props {
value?: string;
onChange?: (html: string) => void;
}
const QuillNoSSRWrapper = dynamic(() => import("react-quill"), {
ssr: false,
loading: () => <p>Loading...</p>,
});
const Editor: React.FC<Props> = ({ value, onChange }) => {
const modules = {
toolbar: [
[{ header: "1" }, { header: "2" }],
["bold", "italic", "underline"],
[{ list: "ordered" }, { list: "bullet" }, { indent: "-1" }, { indent: "+1" }],
[{ color: [] }, { background: [] }],
["link"],
["clean"],
],
clipboard: {
// toggle to add extra line breaks when pasting HTML:
matchVisual: false,
},
};
const formats = ["header", "bold", "italic", "underline", "list", "bullet", "indent", "background", "color", "link", "clean"];
return <QuillNoSSRWrapper value={value} onChange={onChange} theme={"snow"} modules={modules} formats={formats} />;
};
// 사용
<Form.Item name="comment" initialValue="">
<Editor />
</Form.Item>
이러면 form에서 알아서 상태관리를 해준다.
3.False positive "You are passing the delta object from the onChange event back as value"
해결 방법: react-quill 컴포넌트를 감싸고 있는 form.item 에 initValue설정