16

How to test if the content of draftjs editor is empty?

The only idea that I have now is an object comparison against the object returned from this function : EditorState.createEmpty().getCurrentContent()

zianwar
  • 3,642
  • 3
  • 28
  • 37

4 Answers4

61

Just use the hasText function on ContentState :

editorState.getCurrentContent().hasText()
zianwar
  • 3,642
  • 3
  • 28
  • 37
  • 3
    Does this work with editor states that have only images etc? I have read the docs of `draftjs` and there doesn't seem to be a straight-forward way to check if editor state is empty. I think they left this as an implementation detail because it is not clearly understood what the meaning of `empty` is, maybe because even if the editor state is `empty`, it contains other info like cursor position, placeholder etc which may not be the exact kind of content we would like to check for. I could be wrong, let me know if this helps. – kaushik94 Oct 31 '16 at 11:00
  • This is nice. But the issue is that even if the user has typed only spaces then also it will return true. How to check that case? – sktguha Oct 19 '20 at 21:43
6
 contentState.hasText() && contentState.getPlainText().length > 0 

Check

  • Empty
  • White Space
Zanyar Jalal
  • 1,407
  • 12
  • 29
2
export const isEmptyDraftJs = (rawState) => {
  if (!rawState || _.isEmpty(rawState)) { // filter undefined and {}
    return true;
  }
  const contentState = convertFromRaw(rawState);
  return !(contentState.hasText() && (contentState.getPlainText() !== ''));
};

I am not sure it is perfect but I use above code.

When you add just image, there is an space character so getPlainText() can filter only image draftJS.

MinLoveSu
  • 243
  • 1
  • 2
  • 15
0
const text=editorState.getCurrentState().getPlainText()
return text===''
chenjiahe
  • 29
  • 5
  • 1
    While this code may answer the question, providing additional context regarding how and/or why it solves the problem would improve the answer's long-term value. You can find more information on how to write good answers in the help center: https://stackoverflow.com/help/how-to-answer . Good luck – nima Oct 25 '22 at 08:48