useWindowDimensions возвращает неправильную высоту

#reactjs #react-native #react-hooks

#reactjs #react-native #реагирующие крючки

Вопрос:

У меня возникли проблемы с подключением useWindowDimensions в react-native, возвращающим слишком маленькую высоту. Высота, которую он мне дает, составляет 36 пикселей, в то время как я знаю, что моя фактическая высота экрана на устройстве, которое я использую для тестирования, равна 568.

Когда я поворачиваю свое устройство в альбомную ориентацию, высота корректируется до нужной высоты.

Я создал очень простой проект expo, который регистрирует высоту экрана при нажатии кнопки. Клонирование и запуск должны быть очень быстрыми, если у вас есть expo: https://github.com/PeterHSteele/window-dimensions-test . Иногда (вероятно, большую часть времени) журнал является правильным, но при повторных перезагрузках в конечном итоге он всегда показывает неправильную высоту. Насколько я могу судить, правильно это или нет, кажется совершенно случайным.

У меня такая же проблема, когда я использую useDimensions сообщества react native или API Dimensions. Хотя существует более старая версия моего проекта, в которой, похоже, нет проблемы, так что, возможно, это проблема совместимости версий:

Версии в этом демонстрационном проекте, который, похоже, не работает:

 "expo": "~39.0.2"
"react": "16.13.1",
"react-dom": "16.13.1",
"react-native": ".63.3"
  

Версии в старой версии моего приложения, которые действительно работали:

 "expo": "~36.0.0",
"react": "~16.9.0",
"react-dom": "~16.9.0",
"react-native": ".63.3"
  

Комментарии:

1. То же самое происходило с нами некоторое время, useDimensions().window . высота === 36, казалось бы, случайным образом. Удалось ли вам найти решение и / или создать проблему в react-native github?

2. @raphaelrk Нет, после некоторых попыток я решил, что проблема должна быть специфичной для моего устройства, поскольку, похоже, она сохраняется независимо от того, какая библиотека (RN, сообщество RN, Dimensions API) Я использовал. Интересно видеть, что у кого-то еще такая же проблема!

3. github.com/facebook/react-native/issues/29290

4. Я получаю эту проблему, но на планшете IOS. Я одновременно тестирую на телефоне Android без этой проблемы. Случайным образом, перед вращением устройства я получаю размер 36. После поворота значения верны.

Ответ №1:

Это может помочь вам, import {Dimensions} from "react-native"

Размеры вернут высоту и ширину window или screen все, что вы выберете.

это было бы,

const {height,width} = Dimensions.get("window")

или

const {height,width} = Dimensions.get("screen")

Комментарии:

1. OP упоминал: «У меня такая же проблема, когда я использую useDimensions сообщества react native или API Dimensions «.

2. Спасибо, Акшар и Самули, я попытался еще раз использовать Dimensions API в качестве ответа на это предложение, но я все еще чередую высоты 568 и 36