反应 - quill onBlur无效

时间:2017-10-30 15:17:37

标签: javascript reactjs onblur

我在react应用程序中使用react-quill作为富文本编辑器。

我必须将文本编辑器的内容存储在本地React状态,并且只将值发送到Redux' onBlur'。我的问题是onBlur在完成焦点后,单击文本编辑器外部的按钮时,无法工作。 (即,在点击屏幕上的非交互元素时,onBlur可以正常工作,但点击"保存"按钮时,它无法工作。

当前代码:

    class TextEditor extends React.Component {
        constructor(props) {
            super(props)
            this.state={
                content: this.props.content;
            }
            this.handleQuillEditor_change = this.handleQuillEditor_change.bind(this)
            this.handleQuillEditor_update = this.handleQuillEditor_update.bind(this)
        }

        handleQuillEditor_change (value) {
            // handleChange...
        }

        handleQuillEditor_update () {
           console.log('blur activated!')
        }


        render() {
            const cmsProps = this.props.cmsProps
            return (
                <div style={containerStyle}>

                      <ReactQuill value={this.state.content}
                                  onChange={this.handleQuillEditor_change} 
                                  onBlur={this.handleQuillEditor_update}/>

               </div>
            )           
        }
    }

2 个答案:

答案 0 :(得分:2)

我的快速修复:将模糊处理程序移动到QuillComponent的容器div,如下所示:

            <div style={containerStyle} onBlur={this.handleQuillEditor_update}>

                  <ReactQuill value={this.state.content}
                              onChange={this.handleQuillEditor_change} />

           </div>

答案 1 :(得分:2)

我一直在经历同样的错误,我用这堆代码修复了它。

<ReactQuill
    onChange={(newValue, delta, source) => {
                if (source === 'user') {
                  input.onChange(newValue);
                 }}}
    onBlur={(range, source, quill) => {
            input.onBlur(quill.getHTML());
           }}
 />