【发布时间】:2021-01-06 17:33:00
【问题描述】:
我在antdForm.create() HOC 中有一个组件包装器,我想在其中为我的react-quill 编辑器实现验证。
<Form.Item>
{getFieldDecorator('input', {
rules: [RequiredRule],
initialValue: text,
onChange: this.onChangeText
})(
<ReactQuill
className="question-form__rich-text"
modules={quillToolbar}
/>,
)}
</Form.Item>
如果我开始在我的 quill 编辑器文本字段中输入内容,它会触发 onChangeText 函数,该函数又会更改本地状态并启动组件的重新渲染
onChangeText = (_, __, ___, editor) => {
this.setState({
textVal: editor.getText(),
});
};
this.state = {
textVal: '',
};
每次组件重新呈现时,我的文本字段都会失去焦点,因此我必须在字段内单击才能输入另一个字母。
我注意到只有在 <ReactQuill> 组件被 antd <Form.Item> 包裹时才会发生这种情况
如果我将console.log 放入onChangeText 函数并尝试检查文本字段中的内容,它也会显示一些奇怪的行为:
假设我的文本字段最初是空的。我输入字母“a”,它会调用该函数 3 次。首先,它显示文本字段包含字母“a”,然后再次调用该函数显示该字段为空,然后第三次出现字母“a”。当我继续打字时,这种行为仍然存在。
此外,还有一条警告说addRange(): The given range isn't in document.,我不知道它是什么意思。
我已经在这个问题上苦苦挣扎了几天,任何帮助将不胜感激。谢谢
【问题讨论】:
-
最好在 codesandbox 或任何其他在线 ide 上创建/提供它,以便更好地调试。
标签: reactjs richtextbox antd quill react-quill