Я новичок в React.js. Пытаясь понять жизненные циклы в React, я наткнулся на componentWillReceiveProps. Несмотря на то, что я завладел другими функциями, я все еще не в состоянии вычислить componentWillReceiveProps. Я создал небольшой фрагмент, где при каждом нажатии кнопки я увеличиваю переменную «val». Когда val становится кратным 5, я хочу изменить значение «увеличение», которое я не могу сделать.React testing 'componentWillReceiveProps'
Мой код:
var Increment = React.createClass({
getInitialState: function() {
return {val: 0, increasing: false};
},
componentWillMount: function() {
console.log("componentWillMount");
},
componentDidMount: function() {
console.log("componentDidMount");
},
handleClick: function() {
console.log("inHandleClick");
console.log(this.state.val);
this.setState({val: (this.state.val+1)});
},
componentWillReceiveProps : function(nextProps) {
this.setState({
increasing: (nextProps.val > this.props.val)
});
},
shouldComponentUpdate: function(nextProps, nextState) {
return (nextState.val % 5 ==0)
},
render: function() {
console.log(this.state.increasing);
return (
<div>
<button onClick={this.handleClick}>{this.state.val}</button>
</div>
);
}
});
ReactDOM.render(<Increment />, mountNode);
зацепки? Заранее спасибо
'componentWillReceiveProps' не вызывается в вашем случае, потому что реквизит не меняется, изменяется только состояние. Возможно, вы хотели использовать 'componentWillUpdate'? Это будет вызвано, если реквизит или изменение состояния. – Aaron
Аарон ... вы можете мне помочь с примером? –
@SukhmeetSingh Я считаю, что вы в замешательстве между разницей состояния и реквизита в Реактировании. Возможно, вам стоит взглянуть на [это] (http://stackoverflow.com/questions/27991366/what-is-the-difference-between-state-and-props-in-react) – Calvin