Tengo un componente de clase que no se desmonta, aunque implementé componentWillUnmount en él. Intenté console.log las fases de montaje; funciona con el constructor y el componentDidUnmount pero no con el componentWillUnmount . También me da un error: Warning: Can't perform a React state update on an unmounted component cada vez que abro esta pantalla. Todavía soy un nuevo aprendiz y no entiendo muy bien el concepto de montaje.
Aquí está mi código (no console.log "desmontar"):
constructor(props) { console.log('before'); super(props); this.state = { doctors: '' }; this.fetchDo = this.fetchDo.bind(this); } fetchDo() { firebase .firestore() .collection('Doctors') .get() .then((snapshot) => { let doctorsdata = snapshot.docs.map((doc) => { const data = doc.data(); const id = doc.id; return { id, ...data }; }); this.setState({ doctors: doctorsdata, }); }); } componentDidMount() { this.fetchDo(); console.log('mount'); } componentWillUnmount() { this.fetchDo(); console.log('unmount'); }Quizás esto se deba a que su componente está en la raíz de su pila de navegación. Nunca se desmonta si permanece en la parte inferior de tu pila. Intente restablecer la pila y verá el registro de la consola.
Así es como puede restablecer su pila.
import { NavigationActions, StackActions } from 'react-navigation'; const resetAction = StackActions.reset({ index: 0, actions: [NavigationActions.navigate({ routeName: 'MainActivity' })], }); this.props.navigation.dispatch(resetAction);