Я установил несколько динамических стилей, и все работает нормально, кроме случаев, когда компонент отключен. Затем возникает ошибка: невозможно вызвать setState (или forceUpdate) на отключенном компоненте.
Это второй экран в навигаторе стека, когда я перехожу к третьему, все в порядке, но когда я перехожу к первому и компонент отключен, он выдает ошибку.
Я попытался удалить прослушиватель событий в componentWillUnmount, но безуспешно, видимо, я делаю что-то не так.
Кроме того, я пробовал использовать этот подход this.props.navigation.isFocused (), и снова он работает нормально, но затем, если я нахожусь на третьем экране, вращаю устройство и возвращаюсь назад, прослушиватель событий Dimensions не видит изменений и стиля беспорядок.
Итак, как я могу остановить прослушиватель событий, когда компонент отключен?
Заранее спасибо.
constructor(props) {
super(props);
Dimensions.addEventListener("change", dims => {
// this.props.navigation.isFocused() ?
this.setState({
resStyles: {
imageFlex: Dimensions.get("window").height > 500 ? "column" : "row",
imageHeight: Dimensions.get("window").height > 500 ? "50%" : "100%",
infoHeight: Dimensions.get("window").height > 500 ? "50%" : "100%",
infoWidth: Dimensions.get("window").height > 500 ? "100%" : "50%"
}
});
// : null;
});
}
componentWillUnmount
componentWillUnmount() {
console.log("Unmounted");
Dimensions.removeEventListener("change", dims => {
// this.props.navigation.isFocused() ?
this.setState({
resStyles: {
imageFlex: Dimensions.get("window").height > 500 ? "column" : "row",
imageHeight: Dimensions.get("window").height > 500 ? "50%" : "100%",
infoHeight: Dimensions.get("window").height > 500 ? "50%" : "100%",
infoWidth: Dimensions.get("window").height > 500 ? "100%" : "50%"
}
});
// : null;
});
}