首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在React-Quill中设置字符长度

如何在React-Quill中设置字符长度
EN

Stack Overflow用户
提问于 2019-03-24 15:28:16
回答 2查看 3.7K关注 0票数 3

如何在react-quill中设置字符长度。在文档中,getLength()将返回编辑器中字符的长度。

但是我不知道如何实现它。

我的JSX

代码语言:javascript
复制
<ReactQuill theme='snow' 
                        onKeyDown={this.checkCharacterCount}
                        value={this.state.text}
                        onChange={this.handleChange}
                        modules={modules}
                        formats={formats}
                        //style={{height:'460px'}}
                         />
    // OnChange Handler
    handleChange = (value) =>  {
        this.setState({ text: value })
      }
      
      //Max VAlue checker
      checkCharacterCount = (event) => {
        if (this.getLength().length > 280 && event.key !== 'Backspace') {
            event.preventDefault();
        }
    }

上面的解决方案是我在GitHub上找到的。但它不起作用..。

EN

回答 2

Stack Overflow用户

发布于 2019-03-29 22:14:26

以下内容应该是可行的:

代码语言:javascript
复制
class Editor extends React.Component {
  constructor (props) {
    super(props)
    this.handleChange = this.handleChange.bind(this)
    this.quillRef = null;      // Quill instance
    this.reactQuillRef = null;
    this.state = {editorHtml : ''};
  }
  componentDidMount() {
    this.attachQuillRefs()
  }

  componentDidUpdate() {
    this.attachQuillRefs()
  }

  attachQuillRefs = () => {
    if (typeof this.reactQuillRef.getEditor !== 'function') return;
    this.quillRef = this.reactQuillRef.getEditor();
  }
  handleChange (html) {
    var limit = 10;
    var quill = this.quillRef;
    quill.on('text-change', function (delta, old, source) {
      if (quill.getLength() > limit) {
       quill.deleteText(limit, quill.getLength());
      }
    });
    this.setState({ editorHtml: html });
  }


  render () {
    return  <ReactQuill 
            ref={(el) => { this.reactQuillRef = el }}
            theme="snow"
            onChange={this.handleChange}
            value={this.state.editorHtml}
            />
  }
}
票数 2
EN

Stack Overflow用户

发布于 2020-06-17 18:54:48

我相信您遗漏了对ReactQuill组件本身的引用。如果没有引用,您将无法访问它的任何非特权方法(例如getLength())。你可以通过你的handleChange方法(https://github.com/zenoamaro/react-quill#props,也就是onChange属性中的第四个参数)得到一个副本,但我建议你简单地向ReactQuill组件添加一个单独的引用属性并使用它。下面是一个重写为功能组件的示例(...since its 2020已经完成):

代码语言:javascript
复制
export const Editor = () => {
  const [value, setValue] = React.useState(null);
  const reactQuillRef = React.useRef();

  const handleChange = (value) => setValue(value);

  const checkCharacterCount = (event) => {
    const unprivilegedEditor = reactQuillRef.current.unprivilegedEditor;
    if (unprivilegedEditor.getLength() > 280 && event.key !== 'Backspace')
      event.preventDefault();
  };

  return (
    <ReactQuill theme='snow' 
      onKeyDown={checkCharacterCount}
      ref={reactQuillRef}
      value={this.state.text}
      onChange={this.handleChange}
      modules={modules}
      formats={formats} /> 
  ) 
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55321607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档