У меня есть jsbin для этой проблемы здесь: http://jsbin.com/tekuluve/1/edit
В событии onClick я удаляю элемент из модели и повторно рендерирую приложение. Но как ни странно, в компонентахWillReceiveProps() (и componentWillUpdate и componentDidUpdate тоже) nextProps всегда === для this.props, независимо от того, что я делаю.
/** @jsx React.DOM */
var Box = React.createClass({
render: function() {
return (
<div className="box" onClick={ UpdateModel }>
{ this.props.label }
</div>
);
}
});
var Grid = React.createClass({
componentWillReceiveProps: function(nextProps) {
// WTF is going on here???
console.log(nextProps.boxes === this.props.boxes)
},
render: function() {
var boxes = _.map(this.props.boxes, function(d) {
return (<Box label={ d.number } />);
});
return (
<div className="grid">
{ boxes }
</div>
);
}
});
var model = [
{ number: 1 },
{ number: 2 },
{ number: 3 },
{ number: 4 },
{ number: 5 }
];
function UpdateModel() {
React.renderComponent(
<Grid boxes={ _.pull(model, _.sample(model)) } />,
document.body
);
}
React.renderComponent(
<Grid boxes={ model } />,
document.body
);
Мне нужно, чтобы nextProps отличались от this.props после того, как он был обновлен через UpdateModel(), в событии lifecycle компонента componentWillReceiveProps().