2017-01-25 54 views
2

有事件發生,但是它在觸發移動或導航(箭頭等)按鈕時也會觸發。Draft.JS:探測內容變化的正確方法

我想檢測是否內容已更改。基本上,當第一次變化發生時,我只需要檢測一次。愚蠢的方式「比較內容」可能在這裏工作,但這是一種反模式,因爲這項任務太耗費資源。

回答

4

由於草案採用了不可變的數據結構,它不必是資源重 - 比較引用應該是足夠了:

onChange(newEditorState) { 
    const currentContent = this.state.editorState.getCurrentContent() 
    const newContent = newEditorState.getCurrentContent() 

    if (currentContent !== newContent) { 
    // Content has changed 
    } 
} 
+0

大概不會。應該使用Immutable.is()來比較基於Immutable.js的數據。 https://facebook.github.io/immutable-js/docs/#/is –

+0

這裏沒有必要,絕對不推薦。由於每當它發生變化時都會得到一個** new **'contentState',所以知道是否已經改變的最便宜的方法是查看引用是否已經改變。 – tobiasandersen

+0

但是,如果你想檢查,例如,它的內容已經改變,因爲它是從服務器加載... –