Я создал простой онлайн-редактор без идентификатора, реализованный в бэкэнде с Node.JS с Socket.IO, MongoDB и клиентом, использующим React для подключения Socket.IO.
Для создания редактора я использовал Froala Editor с act-froala-wysiwyg в качестве плагинов для React.
Я развернул свое приложение на Heroku по адресу https://dontpad.herokuapp.com, и оно отлично работает с несколькими пользователями (Socket работает нормально).
Это мой скриншот о том, как он работал с 7 пользователями онлайн один раз и работает, когда кто-то меняет данные:
Ошибка
Но я обнаружил, что после редактора Froala после изменения 11 раз , происходит сбой редактора Froala , и я неНе понимаю, что происходит?
Это скриншот после того, как модель Froala изменилась 10 раз , и она все еще работает:
И когда я изменил его на 11th , он зависал:
Ошибка наконсоль: (ошибка появляется только примерно через 5с после сбоя редактора - LoL)
froala_editor.pkgd.min.js: 7 Uncaught TypeError: Не удается прочитать свойство'VOID_ELEMENTS' со значением null в Object.f [as isEmpty] (froala_editor.pkgd.min.js: 7) в Object.E [as get] (froala_editor.pkgd.min.js: 9) в froala_editor.pkgd.min.js: 19
Исходный код
Это мой репозиторий на github https://github.com/huynhsamha/dontpad
Это мой код рендеринга Froala Editor
<FroalaEditor
tag="textarea"
model={this.props.model}
config={configFrolaEditor}
onModelChange={this._onChangeModel}
/>
Я использовалRedux
для сопоставления состояния с реквизитами дочернего компонента, поэтому model={this.props.model}
.
const mapStateToProps = state => ({
model: state.Model
});
И это _onChangeModel
, которые излучают в сокет и вызывают this.props.editModel(model);
, то есть mapDispatchToProps
_onChangeModel = (model) => {
this.timeShowTextSaving = Date.now();
this.props.editModel(model);
this.setState({ stateModel: msg.SAVING });
socket.emit(conf.socket.client.modelChanged, {
model, room: this.room
});
}
// This is mapDispatchToProps
const mapDispatchToProps = dispatch => ({
editModel: (model) => {
dispatch(actions.editModel(model));
}
});
Это полная версия этого файла - Editor.jsx
И это мой конфиг компонента Froala Editor Component Что-то не так вмоя конфигурация?
export const config = {
placeholderText: 'Edit Your Content Here!',
spellcheck: false,
scaytAutoload: false,
charCounterCount: false,
theme: 'custom',
indentMargin: 10,
heightMin: window.screen.availHeight,
fontFamily: {
// fonts ...
},
toolbarButtons: [
'bold', 'italic', // buttons ...
]
};
Кто-нибудь сталкивался с такой проблемой, как я?