HarmonyOS 鸿蒙Next中鸿蒙版RN的dimensions.window 鸿蒙的原生桥接类是哪个呢

HarmonyOS 鸿蒙Next中鸿蒙版RN的dimensions.window 鸿蒙的原生桥接类是哪个呢 原生是,鸿蒙版本接入了RN的0.72.38版本,在RN模块中Dimensions.get(‘window’) 获取不到值;

调用代码如下,打印宽高都是0

componentDidMount() {
  const { width, height } = Dimensions.get('window');
  console.log('window=====', width, height);
}

对比了下iOS的RN,iOS的RN的dimensions.window原生在React-CoreModules的 RCTDeviceInfo.mm类里面,如下图:

cke_209.png

想问问鸿蒙版的桥接类在哪个类里面,看看里面的桥接方法是否调用;


更多关于HarmonyOS 鸿蒙Next中鸿蒙版RN的dimensions.window 鸿蒙的原生桥接类是哪个呢的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

延迟获取窗口尺寸,窗口尺寸的正确获取时机通常在onPageShow生命周期。在RN中可通过setTimeout延迟调用

更多关于HarmonyOS 鸿蒙Next中鸿蒙版RN的dimensions.window 鸿蒙的原生桥接类是哪个呢的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你的RN版本低了,用新版本试试看,以下代码 Dimensions.get(‘window’) 可以获取到值

import React from 'react';
import {
  View,
  Text,
  StyleSheet,
  Dimensions,
  SafeAreaView,
} from 'react-native';

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

export default function App() {
  return (
    <SafeAreaView style={styles.container}>
      <View style={styles.content}>
        <Text style={styles.title}>屏幕尺寸信息</Text>
        <Text style={styles.text}>
          宽度: {width.toFixed(2)} 像素
        </Text>
        <Text style={styles.text}>
          高度: {height.toFixed(2)} 像素
        </Text>
        <Text style={styles.note}>
          (这是通过 Dimensions.get('window') 获取的)
        </Text>
      </View>
    </SafeAreaView>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#f5f5f5',
  },
  content: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    padding: 20,
  },
  title: {
    fontSize: 24,
    fontWeight: 'bold',
    marginBottom: 20,
    color: '#333',
  },
  text: {
    fontSize: 18,
    marginBottom: 10,
    color: '#555',
  },
  note: {
    marginTop: 20,
    fontSize: 14,
    color: '#999',
    fontStyle: 'italic',
  },
});

在HarmonyOS鸿蒙Next中,鸿蒙版React Native的dimensions.window对应的原生桥接类是ohos.agp.window.WindowManager。该类提供了获取窗口尺寸信息的方法,可通过getWindow()获取当前窗口实例,再调用getSize()或相关属性来访问窗口宽高等维度数据。

在HarmonyOS Next中,鸿蒙版React Native的Dimensions.get(‘window’)桥接实现位于react.arkui.thirdparty.ReactDimensions类中。该类通过@ReactMethod注解暴露了getWindowDimensions方法给JS层调用。

当Dimensions.get(‘window’)返回宽高为0时,通常是因为:

  1. 窗口尺寸信息尚未完成初始化
  2. 桥接方法调用时机过早
  3. 鸿蒙端窗口事件监听未正确触发

建议检查以下方面:

  • 确认在组件挂载完成后才调用Dimensions.get
  • 验证鸿蒙端窗口尺寸监听器是否正确注册
  • 检查React Native鸿蒙适配层中窗口尺寸的更新机制

可参考鸿蒙React Native适配源码中的ReactDimensions类实现,确认窗口尺寸获取逻辑是否正常执行。

回到顶部