React-Quill - ERROR You most probably want `editor.getContents()` instead

Bob Lorriman picture Bob Lorriman · Nov 16, 2017 · Viewed 8.8k times · Source

When I save the form (onSubmit) I get this Error: You are passing the delta object from the onChange event back as value. You most probably want editor.getContents() instead.

The rest of the script runs fine and writes everything into the database as expected, but React-Quill triggers the error and hangs up the page.

What do I need to do to define editor.getContents()?

export default class CreateDiscussionForm extends Component {
constructor(props){
super(props);
this.state = {
  error: '',
  editorHtml: ''
};
this.handleChange = this.handleChange.bind(this);
}

handleChange (html) {
 this.setState({ editorHtml: html });
}

onSubmit(e) {
 var background = this.state.editorHtml;
 console.log('background', background); //<p>testing</p>
 //... rest of code



<ReactQuill
    name="editor"
    theme={'snow'}
    ref="comment"
    onChange={this.handleChange}
    value={this.state.editorHtml}
    modules={quillModules}
    placeholder="add the discussion background (optional)"
/>

Thanks in advance - Bob

Answer

mayid picture mayid · Dec 11, 2017

Not sure about why Quill interprets the initial value as a delta root, but i solved this warning by passing an empty string like this:

<ReactQuill
    name="editor"   
    onChange={this.handleChange}
    value={this.state.editorHtml || ''}
/>

The error links to here btw: https://github.com/zenoamaro/react-quill#using-deltas And this is a more advanced description of what Quill interprets as deltas: https://quilljs.com/docs/delta/ (basically, deltas are changes stored in json format, and they are handled apart from quill, meaning it's an external library)