Я новичок в reactjs. Я пробовал некоторые из примеров. Ниже приводится программа, над которой я работаю, но getDefaultProps и getInitialState не работают должным образом.
getDefaultProps не возвращает имя по умолчанию, если я не указал никаких свойств имени для компонента Greeter. Когда я указываю getInitialState, моя форма не отображается.
var Greeter = React.createClass({
getDefaultProps: function() {
console.info(this.props);
return
{
name: "React";
}
},
getInitialState: function() {
return
{
name: this.props.name;
}
},
onButtonClick: function(e) {
e.preventDefault();
var name = this.refs.name.value;
this.setState({
name: name
});
//alert(name);
},
render: function() {
var name = this.state.name;
return (
<div>
<h1>Hi {name}</h1>
<p>This is from the react component</p>
<form onSubmit = {this.onButtonClick}>
<input type = "text" ref = "name" />
<button>Set Name</button>
</form>
</div>
);
}
});
var name = "Lmntrix";
ReactDOM.render(<Greeter name = {name} />, document.getElementById("app"));
Вы вернули свои объекты в новой строке, что, я думаю, заставило javascript вернуть undefined
:
getDefaultProps: function ()
{
console.info(this.props);
return
{
name:"React"
};
},
getInitialState: function()
{
return
{
name: this.props.name;
}
},
Когда я скопировал этот код в красивее, он автоматически добавил точки с запятой, что подтверждает мою точку зрения:
getDefaultProps: function() {
console.info(this.props);
return;
{
name: "React";
}
},
getInitialState: function() {
return;
{
name: this.props.name;
}
},
Итак, чтобы исправить эту попытку:
getDefaultProps: function() {
console.info(this.props);
return {
name: "React";
}
},
getInitialState: function() {
return {
name: this.props.name;
}
},
@AkshvirSoni, который может не решить эту проблему, но это, безусловно, проблема. См. repl.it/repls/TenderYouthfulCopyleft
Спасибо, @Tomasz, понял. но я не думаю, что это касается моего кода, поскольку исправление этого тоже не дает мне желаемого результата.
Я не думаю, что интервал должен иметь значение для вывода. Но поскольку вы были так уверены в этом, я тоже пробовал, но у меня это не сработало.