我知道如何使用道具設置回調父組件。我在官方反應教程中這樣做。但是,假設我想把道具傳遞給父母的父母。假設我有以下部分組成:道具作爲父母的react.js回調
AllergyBox
AllergiesList
Allergy
我想要實現過敏刪除功能。 AllergyBox擁有過敏症列表的狀態並將其作爲道具傳遞下來。每當過敏刪除按鈕被點擊,我想刪除過敏和刷新用戶界面。 所以我嘗試:
var Allergy = React.createClass({
deleteAllergy: function(e){
e.preventDefault();
var allergy_id = this.props.id;
this.props.onAllergyDelete({
id: allergy_id
});
},
render: function(){
return(
<li>{this.props.name} <a href="#" onClick={this.deleteAllergy}> </a></li>
)
}
});
及過敏名單看起來就像是:
var AllergiesList = React.createClass({
getDefaultProps: function(){
return {allergies: []}
},
sendAllergyDelete: function(id){
this.props.onSendAllergyDelete({
id: id
})
},
render:function(){
var allergies = this.props.allergies.map(function(allergy){
return(
<Allergy name={allergy.name} key={allergy.id} id={allergy.id} onAllergyDelete={this.sendAllergyDelete} />
)
});
return(
<ul>
{allergies}
</ul>
)
}
});
而且我應該處理我刪除AllergyBox組件:
var AllergyBox = React.createClass({
getInitialState: function(){
return {
allergiesList: [],
form: []
}
},
handleAllergyDelete: function(id){
alert(id);
},
render: function(){
return(
<div className="allergies">
<AllergiesList allergies={this.state.allergiesList} onSendAllergyDelete={this.handleAllergyDelete} />
</div>
)
}
});
但我有過敏成分的錯誤:
this.props.onAllergyDelete is not a function
我是新來的反應,所以我不知道什麼是最好的解決辦法通過組件層次結構傳遞某些東西。