Предположим, что у меня есть компонент реагирования - кнопка - это увеличивает значение, когда я нажимаю на него.Состояние и реквизит изменяются?
Например
var Component = React.createClass({
getInitialState: function() {
return {count: 0}
},
increment: function() {
this.setState({count: this.state.count + 1})
},
render: function() {
return (<button onClick={this.increment}>{this.state.count}</button>);
}
})
React.render(<Component />, document.getElementById('react-container'));
состояние изменчиво!
я могу сделать подобную вещь с реквизитом
var Component = React.createClass({
increment: function() {
this.setProps({count: this.props.count + 1})
},
render: function() {
return (<button onClick={this.increment}>{this.props.count}</button>);
}
})
React.render(<Component count={0}/>, document.getElementById('react-container'));
состояние изменчиво!
Некоторые из ресурсов, которые я проверил, говорят, что реквизиты неизменяемы, но затем идите и делайте что-то вроде setProps
. Различные ресурсы противоречат друг другу. Это затрудняет мне понимание разницы между состоянием и реквизитом.
Являются ли реквизиты изменчивыми? Если нет, то почему я могу их изменить? Похоже, что изменение реквизита - это не хорошая практика, это правда? Если да, то почему существует setProps
?