@sdgroup14

Как прослушивать ивент с родителя в дочерние компоненты React Typescript?

Всем привет. Вообщем суть вопроса. Есть root компонент в котором я addEventListener('keypress') кнопки "Escape", в root компоненте есть 4 компонента в 3 из которых я должен пробросить isMenu = !isMenu(этот кейпрейсс), т.е. в 3 компонента чекаются изменения а в 1 нет. Не до конца понял redux пытался решить нативными методами - не получилось, или звезды не так стали что в голову не лезит :). Через нативные методы пробовал в root setState и в дочерних методах componentwillreceiveprops. Но почему то обновляются все 4 компонента. Работаю на Angular 2+ больше года. Там привык либо создавать new Subject() либо через и в дочернем @Input() private value: boolean
тут я так понимаю такого нет?) Подскажите пожалуйста. Желательно с примерами

https://codesandbox.io/s/awesome-sea-soyqe
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
1. Обновляйте не свойство, а состояние компонента.
Component State
2. Передавайте в дочерние компоненты свойства на основе состояния:
render() {
  const { value } = this.state;
  return (
    <>
      <Child1 value={value} />
      <Child2 value={value} />
      <Child3 />
    </>
  );
}


3. В дочерних компонентах можно реагировать на обновление свойства:
componentDidUpdate(prevProps) {
  if (prevProps.value !== this.props.value) {
    this.doSomething();
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы