Итак, проблема в том, что у вас есть редактор.
Пользователь продолжает печатать в редакторе, и он некоторое время бездействует, как 5 секунд. Таким образом, после простоя в течение 5 секунд, вы сделали сетевой запрос к API, чтобы сохранить то, что он напечатал в базе данных. Он должен сделать только один запрос после 5 секунд простоя.
Я сделал это, но он сделал запросы, которые равны количеству слов. если вы наберете как asdf
, он сделает четыре запроса API. В моем примере четыре console.log()
;
const EditorComponent = () => {
const [editorState, setEditorState] = React.useState(
EditorState.createEmpty()
);
// I need another logic which checks the time difference of idling.
const debounced = () => {
return debounce(() => {
console.log("the api is going to call after 5 seconds");
}, 5000);
};
const onEditorStateChange = value => {
const rawContent = convertToRaw(value.getCurrentContent());
const markdown = draftToMarkdown(rawContent);
setEditorState(value);
debounced()
};
return (
<div style={{ width: "500px" }}>
<Editor
editorState={editorState}
toolbarClassName="toolbarClassName"
wrapperClassName="wrapperClassName"
editorClassName="editorClassName"
onEditorStateChange={onEditorStateChange}
/>
</div>
);
};
export default EditorComponent;