Состояние первоначального рендера здесь - это начальное состояние. Я использую componentWillMount(), однако он не будет работать без предварительной проверки, установлен ли компонент. Результат при использовании rawMarkup() - пустой исходный объект состояния. Все работает правильно при повторном рендеринге, но задается вопросом, почему почтовый объект внутри состояния по-прежнему пуст в первоначальном рендере. Есть ли лучший способ сделать это? Спасибо.Состояние монтажа Reactjs перед первоначальной визуализацией или сохранением как есть?
var Post = React.createClass({
propTypes: {
source: React.PropTypes.string.isRequired,
},
getInitialState: function() {
return {
post: {}
};
},
getDefaultProps: function() {
return {
source: 'http://localhost:3000/api/posts/' + postSlug
};
},
componentWillMount: function() {
$.get(this.props.source, function(result) {
if (this.isMounted()) {
this.setState({post: result});
}
}.bind(this));
},
rawMarkup: function() {
console.log(this.state.post);
var rawMarkup = marked(this.state.post.body || '', {sanitize: true});
return { __html: rawMarkup };
},
render: function() {
var post = this.state.post;
var date = moment(post.date).format('MM[/]DD[/]YYYY');
return (
React.createElement('div', {style: {marginLeft: '115px'}},
React.createElement('h1', {style: {marginTop: '50px'}}, post.title),
React.createElement('h5', {style: {marginBottom: '25px'}}, date),
React.createElement('span', {dangerouslySetInnerHTML: this.rawMarkup()})
)
);
}
});
Да, это имеет смысл, спасибо. Получил дополнительный полезный ввод через другой носитель и установил исходное состояние сообщения null с оператором if() в рендере, чтобы проверить готовность состояния. – WallEBot