Есть куча полезных ответов здесь, поэтому я хочу, чтобы добавить этот jsfiddle demo. Он показывает, как он работает в действии. Для сохранения и извлечения содержимого редактора здесь используется local storage
. Но для базы данных, основной принцип тот же.
В этом демонстрационном примере вы можете увидеть простой компонент редактора, когда вы нажимаете на SAVE RAW CONTENT TO LOCAL STORAGE
, мы сохраняем текущее содержимое редактора как строку в локальном хранилище. Мы используем convertToRaw
и JSON.stringify
для него:
saveRaw =() => {
var contentRaw = convertToRaw(this.state.editorState.getCurrentContent());
localStorage.setItem('draftRaw', JSON.stringify(contentRaw));
}
Если после этого вы перезагрузите страницу, ваш редактор будет инициализирован с содержанием и стилей, что вы сохранить. Мы принимаем in constructor
, мы читаем соответствующее местное хранилище, а с JSON.parse
, convertFromRaw
и createWithContent
методы инициализируем редактор с ранее сохраненным контентом.
constructor(props) {
super(props);
let initialEditorState = null;
const storeRaw = localStorage.getItem('draftRaw');
if (storeRaw) {
const rawContentFromStore = convertFromRaw(JSON.parse(storeRaw));
initialEditorState = EditorState.createWithContent(rawContentFromStore);
} else {
initialEditorState = EditorState.createEmpty();
}
this.state = {
editorState: initialEditorState
};
}
Мне нужно сохранить это в базе данных. Как я сериализую и десериализую его? –
Я отредактировал свой ответ :) – christophetd
Я могу просто сохранить необработанный объект в mongodb, аккуратно. –