Как бы я назвал методы других детей, когда нажата кнопка на третьем ребенке? - PullRequest
0 голосов
/ 03 июня 2019

У меня есть родительский компонент и 3 дочерних компонента.Когда я нажимаю на кнопку в третьем дочернем элементе, я должен иметь возможность запускать методы в родительском элементе, а также запускать методы в обоих дочерних элементах.Как бы я поступил так?

class Main extends Component{
  constructor(){
    super();
    this.state = {
      amount: 10,
    };
  }

  handleOnPayButtonClick = () => {
// here I should be able to runValidations on both the children
    this.setState({
      amount: 20,
    });
  }

render(){
  <Addresss />
  <PaymentDetails />
  <PayButton
      onPayButtonClicked={() => this.handleOnPayButtonClick()}
  />
}
}

class Address extends Component{

  runValidation = ()=>{
// validations for this component state
  }
......
}

class PaymentDetails extends Component{

  runValidation = ()=>{
// validations for this component state
  }
......
}

class PayButton extends Component{
   <Button onClick={props ? props.onPayButtonClicked : undefined}>
}```

/

1 Ответ

0 голосов
/ 04 июня 2019

Я бы искал способы сделать проверки вне нажатия кнопки.За исключением этого, вы можете передать реквизиты в одноуровневые элементы Address & PaymentDetails, чтобы выполнить прогон проверки, а затем заставить компоненты вернуть функцию родителю с их результатом.Это было бы ужасно, хотя

...