Не могу вызвать дочернюю функцию реквизита
Я хочу вызвать функцию в родительском компоненте, когда кнопка нажата в дочернем компоненте,
class Home extends Component {
constructor(props) {
super(props);
this.Quiz = this.getQuizpopup.bind(this); //Function I want to call
this.state = {
latitude: LATITUDE,
}
};
}
А в дочернем компоненте я использую для вызова функции следующим образом
<View>
<Button onPress={this.props.Quiz()} buttonStyle={styles.buttonStyle} title="MpTest" />
</View>
2 ответа
Решение
Вы должны передать опору в качестве обратного вызова в дочернем компоненте, который при щелчке может вызвать вызов функции в родительском компоненте.
Ваш код должен выглядеть следующим образом:
class Home extends Component {
constructor(props) {
super(props);
this.Quiz = this.getQuizpopup.bind(this); //Function I want to call
this.state = {
latitude: LATITUDE,
}
}
Quiz = () => {
//button click handler.
}
render () {
return (
<Child
onQuizButtonClick = {this.Quiz} />
)
}
}
и у вашего ребенка код должен быть:
<Button onPress={() => this.props.onQuizButtonClick()} buttonStyle={styles.buttonStyle} title="MpTest" />
Надеюсь это поможет. Удачного кодирования:)
Вам нужно передать реквизиты для использования этой функции в вашем дочернем компоненте.
class Parent extends Component{
quiz = () => {
//function you want to call
}
render(){
return(
<Child quiz={this.quiz}> //passing quiz function as prop to child component
)
}}