Hej Wszystkim,
Jak to bywa w naszym pięknym zawodzie, czasem dostajesz zadania zupełnie spoza swojego zakresu :) dziś trafiło na mnie i na React Native js o którym nie mam zielonego pojęcia. Chodzi o to, że w RN jest taka biblioteka jak Dimmensions
, która zwraca nam właściwości ekranu.
https://reactnative.dev/docs/dimensions
Chodzi o to, że te właściwości nie zmieniają się kiedy podepniemy kabel HDMI. Co ciekawe - tylko dla Androida, iOS działa ok. Doczytałem w powyższym linku, że powinno korzystać się z biblioteki useWindowDimensions()
. No i tu pojawiają się schody. W każdym miejscu gdzie użyję tej funkcji, aplikacja się zawiesza. Doczytałem gdzieś, że biblioteki różnią się od siebie tym, że useWindowDimensions()
korzysta z hooków, czyli jak się domyślam czegoś podobnego do wskaźników z C++.
Spróbowałem więc przykładu z powyższego linka, który też korzysta z hooków:
import React, { useState, useEffect } from "react";
import { View, StyleSheet, Text, Dimensions } from "react-native";
const window = Dimensions.get("window");
const screen = Dimensions.get("screen");
const App = () => {
const [dimensions, setDimensions] = useState({ window, screen });
const onChange = ({ window, screen }) => {
setDimensions({ window, screen });
};
useEffect(() => {
Dimensions.addEventListener("change", onChange);
return () => {
Dimensions.removeEventListener("change", onChange);
};
});
return (
<View style={styles.container}>
<Text>{`Window Dimensions: height - ${dimensions.window.height}, width - ${dimensions.window.width}`}</Text>
<Text>{`Screen Dimensions: height - ${dimensions.screen.height}, width - ${dimensions.screen.width}`}</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: "center",
alignItems: "center"
}
});
export default App;
i apka również się zawiesza w linijce:
const [dimensions, setDimensions] = useState({ window, screen });
- czy ktoś z was spotkał się z podobnym problemem?
- jest jakaś możliwość obejścia tego?
- czy wina może być po starej wersji RN - 0.60.6? (Oby nie bo nie mam możliwości updatu)
- może w RN jest jakaś inna biblioteka przeznaczona specjalnie do zdarzeń typu podpięcie zewnętrznego monitora?