React Quill如何判断当前聚焦行是否为空?
React Quill 判断当前聚焦行是否为空的方法
当然有方法可以实现,你可以借助Quill实例提供的API,在onChangeSelection回调里完成判断:
- 先确认当前存在有效的光标位置(
range不为空且起始/结束位置一致) - 通过
editor.getLine(range.start)获取光标所在的行对应的Block节点 - 提取该行的纯文本内容,去除空白字符后判断是否为空
修改你的handleChangeSelection函数如下:
const handleChangeSelection = (range, source, editor) => { // 仅处理光标聚焦的情况(无选中内容,只是光标定位) if (range && range.start === range.end) { // 获取光标所在行的Block const lineBlock = editor.getLine(range.start); if (lineBlock) { // 提取行内的纯文本内容 const lineText = editor.getText(lineBlock[0].offset, lineBlock[0].length); // 去除所有空白字符后判断是否为空 const isLineEmpty = lineText.trim().length === 0; console.log('当前聚焦行是否为空:', isLineEmpty); // 这里可以根据isLineEmpty的值做后续逻辑处理 } } };
补充说明:
editor.getLine(index)方法会返回包含当前行Block的数组,第一个元素就是该行的Block对象,包含offset(行在编辑器中的起始位置)和length(行的内容长度)editor.getText(start, length)用于提取指定范围的纯文本,避免了HTML格式的干扰- 使用
trim()是为了排除行内仅包含空格、换行等空白字符的情况,确保判断的准确性
内容的提问来源于stack exchange,提问作者Snivio
相关产品推荐
相关产品推荐

