Не могу вызвать дочернюю функцию реквизита

Я хочу вызвать функцию в родительском компоненте, когда кнопка нажата в дочернем компоненте,

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 
)
}}
Другие вопросы по тегам