0
我有kidsDetail組件它有它自己的狀態,在父組件childDetail組件中使用for循環呈現多個時間。我想要點擊保存按鈕,獲取詳細的kidsDetail信息列表。在父組件中獲取子狀態組件值
貝婁父組件代碼
renderKidsDetails(totalkids) {
/*If user selects 'yes' for kids, then this function is called 'n'
times; n = no. of kids */
const kids= [];
if (this.state.addKidsDetails === true) {
for (let i = 0; i < totalkids; i++) {
kids.push(
<RenderChildDetails key={i} ivalue={i + 1} />
);
}
}
return (
<View style={{ marginLeft: 20 }}>
{kids}
</View>
);
}
KidsDetail.js它有兩個狀態的孩子年齡和性別等都需要這個值獲得檢索父組件
class RenderChildDetails extends Component {
state={
kidsAge: 0,
kidsGender: '',
}
constructor(props) {
super(props);
onClicked=this.onClicked;
//Call function when the back button is pressed in the page header.
}
onClicked=()=>{
console.log(" kid Age "+this.state.kidsAge);
}
render()
{
return(
<View style={{flexDirection:'row',flex:1}}>
<View style={{backgroundColor:'black',height:20,width:20,borderRadius:10,margin:5,alignItems:'center', padding: 1}}>
<Text style={{color:'white'}}>{this.props.ivalue}</Text>
</View>
<TouchableOpacity onPress={() =>{
ActionSheet.show(
{
options: AGE,
cancelButtonIndex: CANCEL_INDEX,
destructiveButtonIndex: DESTRUCTIVE_INDEX,
title: "Select Age"
},
buttonIndex => {
this.setState({ kidsAge: AGE[buttonIndex] });
}
)
}
}>
<View style={{flex:1,margin:5,flexDirection:'row'}} >
<Text>Age: {this.state.kidsAge}</Text>
<Image source={require('../../../Assets/Icons/Settings/Black_down.png')}
style={{height:11,width:11,margin:5}} />
</View>
</TouchableOpacity>
<TouchableOpacity onPress={() =>
ActionSheet.show(
{
options: GENDER,
cancelButtonIndex: CANCEL_INDEX,
destructiveButtonIndex: DESTRUCTIVE_INDEX,
title: "Gender"
},
buttonIndex => {
this.setState({ kidsGender: GENDER[buttonIndex] });
}
)}>
<View style={{flex:1,margin:5,flexDirection:'row'}}>
<Text>Gender: {this.state.kidsGender}</Text>
<Image source={require('../../../Assets/Icons/Settings/Black_down.png')}
style={{height:11,width:11,margin:5}} />
</View>
</TouchableOpacity>
</View>
);
}
}
export default RenderChildDetails;
請格式化你的代碼。 – topher