Я пытаюсь прочитать данные из базы данных, а затем визуализировать DOM через реакцию. Для ввода я использовал draft.js и запускал convertToRaw на нем перед сохранением в db. Однако, когда я запускаю convertFromRaw и визуализацию, я получаю эту ошибку в консоли: «Uncaught TypeError: Невозможно прочитать блоки« свойств неопределенного ». Это мой первый раз с использованием draft.js, поэтому я не уверен, что я делаю неправильно. Кто-то может помочь? Спасибо огромное!DraftJS Uncaught TypeError: Невозможно прочитать блоки «свойств» undefined
//App.js
import React, {
Component
}
from 'react';
import Blogs from './blogs';
import {
Editor, EditorState, convertToRaw
}
from 'draft-js'
// include horizon client
const Horizon = require('@horizon/client');
const horizon = Horizon({
secure: false
});
// init blogs collection in rethinkdb
const blogger = horizon('blogs')
class App extends Component {
constructor(props) {
super(props);
this.state = {
title: false,
author: false,
editorState: EditorState.createEmpty()
}
}
// watch form values for change
handleChangeTitle(event) {
this.setState({
title: event.target.value
});
}
handleChangeAuthor(event) {
this.setState({
author: event.target.value
});
}
handleChangeBody(editorState) {
this.setState({
editorState
});
}
writeBlog() {
// check for empty string and return error to user
if (this.state.title === false || this.state.author === false || this.state.body === false) {
alert('Invalid Submission: One or more fields are empty');
return;
}
let blog = {
title: this.state.title,
author: this.state.author,
editorState: convertToRaw(this.state.editorState.getCurrentContent())
};
// store the inputs in the database
blogger.store(blog);
}
render() {
return (<form>
< div className = "center" >
< Blogs blogger = {
blogger
}
/>
<div className="writer">
<div className="basic-inputs">
<div className="input-unit">
<label>Title</label >
< input onChange = {
this.handleChangeTitle.bind(this)
} > < /input>
</div >
< div className = "input-unit" >
<label> Author < /label>
<input onChange={this.handleChangeAuthor.bind(this)}></input >
< /div>
</div >
<label> Blog < /label>
<Editor onChange={this.handleChangeBody.bind(this)} editorState={this.state.editorState}/>
< button onClick = {
this.writeBlog.bind(this)
} > Post < /button>
</div >
< /div>
</form >
);
}
}
export
default App;
import React, { Component } from 'react';
import {convertFromRaw} from 'draft-js'
export default class Blog extends Component {
constructor(props) {
super(props)
this.props = props;
}
render() {
return (
<div className="blog-container">
<h2 className="title">{this.props.blg.title}</h2>
<h4 className="author">{this.props.blg.author}</h4>
<p className="body">{convertFromRaw(this.props.blg.body)}</p>
</div>
);
}
}
что делает 'this.props.blg.body' возвращение? – finalfreq
Он возвращает состояние входа draftjs как объект из базы данных – ohenecoker
Что произойдет, если вы выполните 'convertFromRaw (JSON.parse (this.props.blg.body))' – finalfreq