Ответ 1
Да, это своего рода разница. За исключением компонента stateful, вы также можете изменить состояние, используя this.setState
, например:
var React = require('react');
var Header = React.createClass({
getInitialState: function() {
return {
imageSource: "mypicture.png"
};
},
changeImage: function() {
this.setState({imageSource: "differentpicture.png"});
},
render: function() {
return(
<img src={this.state.imageSource} onClick={this.changeImage.bind(this)} />
);
}
});
module.exports = Header;
Итак, в приведенном выше примере changeImage
управляет состоянием компонента (что также приведет к повторному отображению всех дочерних/зависимых компонентов).
Где-то в приложении вам нужно привязать данные или запомнить вещи. Компоненты без состояния немыслимы (и это хорошо), они не могут запомнить и не могут дать контекст другим частям пользовательского интерфейса. Компоненты stateful обеспечивают необходимый контекстный клей.
С другой стороны, компоненты без состояния просто передают контекст (обычно через this.props
:
var React = require('react');
var Header = React.createClass({
render: function() {
return(
<img src={this.props.imageSource} />
);
}
});
ReactDOM.render(<Header imageSource="myImage.png"/>, document.body);
В приведенном выше примере вы можете видеть, что во время render
, imageSource
передается как атрибут и затем добавляется к объекту без состояния.