Ответ 1
Это означает, что фактическая DOM находится в другом состоянии, чем виртуальная DOM, и React не может согласовать два для рендеринга. Обычно это вызвано тем, что ELSE меняет HTML-код, который ожидают React, либо ошибка JavaScript, либо другая библиотека, вносящая изменения.
Как отметил Пирхо, ваш вызов this.props.map
кажется проблемой. this.props
должен возвращать объект, а Object
не имеет метода map
. Ошибка Invariate может быть выбрана из-за того, что компонент не смог подключиться к DOM из-за этой синтаксической ошибки.
Я написал код с измененной версией вашего кода (и некоторый дополнительный код поддержки, чтобы сделать демонстрационную работу). Вы можете проверить это здесь: http://codepen.io/jhubert/pen/PwqZyr
Ядро кода выглядит следующим образом:
var renderEntry = function (entry) {
var divStyle = {
backgroundImage: 'url(' + entry.preview + ')'
};
return D.div({ key: entry.key, className: 'image-stream-entry'},
D.div({className: 'image', style: divStyle}),
imageMetadata(entry)
);
};
Gallery = React.createClass({
displayName: 'Gallery',
propTypes: {
entries: React.PropTypes.array.isRequired
},
getDefaultProps: function () {
return { entries: [] };
},
render: function () {
return D.div({ className: 'gallery' }, this.props.entries.map(renderEntry));
}
});