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

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

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>

Я получаю сообщение об ошибке Невозможно вызвать дочернюю функцию props

должен быть this.Quiz - так как вашей функции викторины нет в реквизите

Robin Zigmond 01.12.2018 17:04

Можете ли вы добавить полный код из компонента Home?

Pranay Tripathi 01.12.2018 17:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
213
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

class Parent extends Component{
quiz = () => {
  //function you want to call
}
render(){
return(
  <Child quiz = {this.quiz}> //passing quiz function as prop to child component 
)
}}
Ответ принят как подходящий

Вы должны передать опору как обратный вызов в дочернем компоненте, который при щелчке может вызвать вызов функции в родительском компоненте.

Ваш код должен выглядеть так:

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" />

Другие вопросы по теме