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

0
mayank goyal 2 Янв 2020 в 13:46
2
componentDidMount в родительском будет вызываться, только если все дочерние компоненты уже смонтированы. stackoverflow.com/ questions / 23734862 /…
 – 
JLai
2 Янв 2020 в 13:50
2
 – 
norbitrial
2 Янв 2020 в 14:07

1 ответ

Это зависит от версии React, которую вы используете.

Если вы используете React версии 16.8 или выше, вы можете использовать хук useEffect в дочернем компоненте, который может вызвать функцию в родительском компоненте.

const Parent = props => {
 const OnChildMount = () => {
  console.log('Child Mounted);
 }
 return (
  <Child onMount={OnChildMount}/>
 )
}

const Child = props => {
 useEffect(() => {
  props.onMount();
 }, []);

 return (
  //The child JSX
 );
}

Пустые скобки [] в хуке useEffect гарантируют, что он запускается только при монтировании дочернего компонента.

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

При этом окончательное решение будет зависеть от ваших конкретных требований.

0
pankajbokdia 2 Янв 2020 в 14:09