@Li_Von

Как связать компоненты?

На сайте есть два компонента, допустим кнопка и текст, при нажатии на кнопку должен меняться массив данных для текста. Но проблема в том, что эти компоненты нельзя запихнуть в один и тем самым использовать setState. Как решить?
  • Вопрос задан
  • 375 просмотров
Решения вопроса 2
rockon404
@rockon404 Куратор тега React
Frontend Developer
Такие задачи легко решаются через родителя:
class Parent extends Component {
  state = {
    text: 'some text',
  };

  handleClick = () => {
    this.setState({ text: 'some other text'});
  };

  render() {
    const { text } = this.state;

    return (
      <Wrapper>
        <Button onClick={this.handleClick} />
        <Text>{text}</Text>
      </Wrapper>
    );
  }
}

В компонентной структуре , как и в любой другой древовидной, физически невозможно расположить два компонента, чтобы они не находились в одном общем родителе. Это факт.
Если вы не используете redux и задача носит частный характер, то передача колбека через родителя и даже через несколько компонентов, может быть простым и эффективным решением.
Другое дело, что в более менее сложном react приложении хорошо использовать redux или аналоги.
Ответ написан
Комментировать
y0u
@y0u
dev
Redux
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы