reactjs - Draft.js 编辑器 onTab 未触发嵌套列表
问题描述
我试图通过单击选项卡来触发嵌套列表,但它实际上不起作用。
我添加了一个 onTab 功能,但它似乎根本不会影响样式。我单击选项卡,没有任何反应。块切换实际上有效,但只能通过单击按钮。
我也尝试使用 draft-js-list-depth-plugin 包来处理这个问题,但它也没有工作。
import React, {useState} from 'react';
import {Editor, EditorState, RichUtils} from 'draft-js';
import { Modal, Button, Card, Box, Typography, Divider, Grid } from '@material-ui/core';
import 'draft-js/dist/Draft.css'
const TextEditor = () => {
const [editorState, setEditorState] = useState(() =>
initialState ? EditorState.createWithContent(initialState) : EditorState.createEmpty()
);
const toggleBlockTypes = (styleString) => {
setEditorState(RichUtils.toggleBlockType(editorState, styleString));
};
const _onBulletListClick = () => {
toggleBlockTypes('unordered-list-item');
};
const _onNumberListClick = () => {
toggleBlockTypes('ordered-list-item');
};
const _onTab = (event) => {
// prevent cursor from selecting the next interactive element
event.preventDefault();
const newState = RichUtils.onTab(event, editorState, 6);
if (newState) {
setEditorState(newState);
return HANDLE_KEY_COMMAND_HANDLED;
}
return HANDLE_KEY_COMMAND_NOT_HANDLED;
};
const handleKeyCommand = (command) => {
const newState = RichUtils.handleKeyCommand(editorState, command);
if (newState) {
setEditorState(newState);
return HANDLE_KEY_COMMAND_HANDLED;
}
return HANDLE_KEY_COMMAND_NOT_HANDLED;
};
return (
<Card variant='outlined'>
<Grid container direction='row' padding='5px'>
<OrderedListButton onClick={_onNumberListClick} />
<UnorderedListButton onClick={_onBulletListClick} />
</Grid>
<Divider />
<Editor
id='editor'
textAlignment='left'
placeholder='Write something'
editorState={editorState}
onChange={setEditorState}
handleKeyCommand={handleKeyCommand}
onTab={_onTab}
/>
</Card>
);
}
export default TextEditor;
解决方案
推荐阅读
- javascript - 如何从对象数组数组中检索值 angular 5
- firebase - Flutter: Only the first item in the Stack is dismissible
- c# - Deriving encapsulated classes with different type
- php - 在 Woocommerce 3 中的新订单电子邮件的干净表中添加一些元数据值
- ios - Swift 4 - 带有 AVAudioPlayer 的 UISlider
- python - 我无法升级 pip:无法获取 URL https://pypi.python.org/simple/pip/:有一个确认 ssl 证书的问题
- augmented-reality - 使用 Sceneform 为 3d 对象设置动画
- android - 来自 eglCreatePbufferSurface 的 android OpenGL 错误
- java - Java JDI ReferenceType 获取绝对路径
- mysql - 无法使用 MVC 模型将一个表的主键添加到另一个表