我有兩個組成部分:App和登記表React.js - Rails的:設置狀態
形式有兩個輸入:名字和姓氏
綜觀開發的應用程序的狀態。我看到的工具長度:未定義和名稱:「名稱輸入」。我沒有收到任何錯誤,但我錯過了最後一個名字。
這隻發生在Rails中。我在非rails環境中嘗試了相同的代碼,並且工作正常。我使用的是這種寶石的陣營:寶石「反應護欄」,「〜> 1.5.0」和運行的Rails 4.2.4
var App = React.createClass({
getInitialState : function(){
return {
registrations: {}
}
},
addRegistration : function(registration){
// create unique id
var timestamp = (new Date()).getTime();
// update state
this.state.registrations['registration-' + timestamp] = registration;
//set the state
this.setState({ registrations : this.state.registrations });
},
render : function(){
return (
<RegistrationForm addRegistration={this.addRegistration}/>
)
}
});
var RegistrationForm = React.createClass({
createRegistration : function(event){
// prevent default
event.preventDefault();
// take data from form and create object
var registration = {
name : this.refs.name.value,
lastname : this.refs.lastname.value
}
// Add registration to App Object
this.props.addRegistration(registration);
this.refs.registrationForm.reset();
//console.log(registration);
},
render : function(){
return (
<div className="col-sm-12">
<form action="" className="form" ref="registrationForm" onSubmit={this.createRegistration}>
<div className="form-group">
<label >Name</label>
<input className="form-control" ref="name"/>
</div>
<div className="form-group">
<label >Last Name</label>
<input className="form-control" ref="lastname"/>
</div>
<div>
<button className="btn btn-primary">Submit</button>
</div>
</form>
</div>
)
}
});
App = React.createFactory(App)
我想要做的就是給每個註冊的唯一身份證號碼基於時間戳。
當我控制檯登錄以下幾點:
addRegistration : function(registration){
// create unique id
var timestamp = (new Date()).getTime();
// update state
this.state.registrations['registration-' + timestamp] = registration;
//set the state
this.setState({ registrations : this.state.registrations });
},
我可以看到一個登記的對象我想要的方式。我可以爲App狀態添加許多獨特的註冊,但每個註冊的長度都是:undefined,name:「name」,但它缺少姓氏。
如果我改變設定狀態,以這樣的:
this.setState({ registrations : registration });
這給了我的名字和姓氏的單一註冊,但它不添加多個註冊。它只創建一次註冊,每次我提交添加註冊表單時都會更新。
感謝您的幫助,但你建議沒有奏效的。 – Asan
現在我得到這個錯誤: 未捕獲TypeError:clonedRegistration.slice不是函數 – Asan
@Asan嘗試使用第二個選項,您的'this.state.registrations'不是一個數組。 – oobgam