javascript - 无法访问模块函数中的 quill 实例

标签 javascript reactjs closures quill

我有:

    const formats = ['header', 'bold', 'italic', 'underline', 'list', 'prediction', 'accepted', 'mention'];
    const modules = {
        mention: {
            allowedChars: /^[a-zA-Z0-9_]*$/,
            mentionDenotationChars: ['@'],
            showDenotationChar: false,
            spaceAfterInsert: false,
            onSelect: (item, insertItem) => {
                clearDocumentState(0)
                const cursorPos = quill.getSelection()
                console.log({ cursorPos })
                insertItem(item)
            },
            source: () => { }
        },
        toolbar: [
            ['bold', 'italic', 'underline'],
            [{ list: 'ordered' }, { list: 'bullet' }],
            [{ header: [1, 2, false] }],
            ['clean']
        ]
    };

    const { quill, quillRef, Quill } = useQuill({
        formats,
        modules,
        placeholder: 'Start writing something amazing...'
    });
我正在使用 https://github.com/afry/quill-mentionhttps://github.com/gtgalone/react-quilljs如果重要的话。
当我尝试访问 quill onSelect 中的实例功能,我得到:
TypeError: Cannot read property 'getSelection' of undefined
我假设函数被缓存了,quill尚未定义。有什么办法可以得到那个实例?

最佳答案

您可以设置onSelect useEffect中的回调当 quill 有值时阻塞。使用getModule获取 mention模块并设置对应的option :

 React.useEffect(() => {
    if (quill) {
      quill.getModule('mention').options.onSelect = ((item, insertItem) => {
        clearDocumentState(0);
        const cursorPos = quill.getSelection();
        console.log({ cursorPos });
        insertItem(item);
      });
    }
  }, [quill]);
Working example

关于javascript - 无法访问模块函数中的 quill 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67526328/

相关文章:

closures - 如何将变量移出闭包?

javascript - 设置 Span 元素的初始值

javascript - 返回多个组件会导致 libART 错误

javascript - 迭代对象内的数组,console.log 工作,但我无法让它返回 react 元素。

javascript - 从顶级 App 类更改 React 上下文

rust - 如何为带盒封闭的结构派生Clone?

javascript - Ruby on Rails 应用程序不包括样式表和 js

javascript - 如何在 AngularJS 中不使用 jquery 的情况下在页面加载时提交表单?

css - sass 与创建 react 应用程序

rust - 将包含引用的结构移动到静态闭包中不起作用