react-native 获取组件的宽度和高度

react-native 获取组件的尺寸有两种方式,第一种方式使用元素自身的onLayout属性去获取,但是这种方式有一个局限性,就是只有在初次渲染的时候才会触发这个函数,而且此种方法获取的是组件相对于父组件的位置坐标。如果我们需要随时都可以去获取组件的尺寸或者相对于屏幕的位置坐标时,这种方式并不适合。

那么这里我们就来看下第二种方式,使用react-native中的findNodeHandle和UIManager来获取组件的尺寸:

import {
    findNodeHandle,
    UIManager
} from ‘react-native‘;

layout(ref) {
        const handle = findNodeHandle(ref);

        return new Promise((resolve) => {
            UIManager.measure(handle, (x, y, width, height, pageX, pageY) => {
                resolve({
                    x,
                    y,
                    width,
                    height,
                    pageX,
                    pageY
                });
            });
        });
 }
          

这里我们声明了一个名叫layout的函数,当我们需要获取组件的宽度和高度或者位置信息时,就可以通过调用这个函数去获取。我们可以看到layout这个函数接受一个ref参数,这个参数表示组件的实例,传入组件的实例后,然后通过findNodeHandle方法获取组件节点。

UIManager.measure接受两个参数,第一个参数是通过findNodeHandle获取的组件节点,第二个参数是获取成功的回调,回调有6个参数:

x,y表示组件的相对位置,width,height表示组件的宽度和高度,pageX,pageY表示组件相对于屏幕的绝对位置。

时间: 2024-10-05 06:43:48

react-native 获取组件的宽度和高度的相关文章

几款简单的 React Native UI 组件

本文推荐 11 个非常棒的 React Native 开源组件,希望能给移动应用开发者提供帮助. React Native 是近期 Facebook 基于 MIT 协议开源的原生移动应用开发框架,已经用于 Facebook 的生产环境.React Native 可以使用最近非常流行的 React.js 库来开发 iOS 和 Android 原生 APP. 1. iOS 表单处理控件 tcomb-form-native tcomb-form-native 是 React Native 强大的表单处

安卓获取屏幕的宽度与高度

获取屏幕的宽度与高度有以下几种方法: 1.WindowManager wm = (WindowManager) getContext()                     .getSystemService(Context.WINDOW_SERVICE);        int width = wm.getDefaultDisplay().getWidth();      int height = wm.getDefaultDisplay().getHeight();   2.Window

如何在onCreate方法中获取视图的宽度和高度

你可以通过视图的getWidth()和getHeight()来获取视图的宽度和高度. 但是,可能会让你失望的是,如果你直接在onCreate方法内调用这两个函数,你会的到0. 为什么呢? 这是因为,当onCreate被调用的时候,视图的内容正在被LayoutInflater来填充xml布局. 这个过程会填充布局,但是暂时不会设置视图的大小. 那么视图到底什么时候获得自己的大小尺寸呢? 实际上是在Layout以后,而layout又是在onCreate调用以后. 那么,如果我们要在onCreate方

jquery如何获取元素的宽度和高度

jquery如何获取元素的宽度和高度: 这当然是比较基础的问题,不过有可能初学者还是不够明了,下面就简单介绍一下. 获取元素的宽度: $(selector).width() 获取元素的高度: $(selector).height() selector是选择器,例如id.类和元素选择器登登. 原文地址是:http://www.51texiao.cn/jqueryjiaocheng/2015/0613/4046.html 最为原始地址是:http://www.softwhy.com/forum.ph

react native image组件不显示图片问题

---恢复内容开始--- 在用react native image组件的时候要设置好这个组件的高宽图片,还有最关键的是ios9以后苹果不支持http协议的图片,要在Info.plist文件下面新添 然后就OK了 ---恢复内容结束--- 原文地址:https://www.cnblogs.com/drizzle-wen/p/8179784.html

php获取设备的宽度和高度

php获取设备的宽度和高度 如果前台没有传输当前请求的宽度和高度,我们有时候需要用php借助javascript获取屏幕的宽和高,以控制现实的样式. 代码如下: 1 <?php 2 /* 3 * 获取设备宽度以及高度 4 * */ 5 if (isset($_GET['width']) AND isset($_GET['height'])) { 6 // 输出变量 7 echo "Screen width is: " . $_GET['width'] . "<br

获取屏幕的宽度和高度

在js中,特别是在一些功能,比如底部返回哪些按钮等,经常需要用到,这里综合运用以下,以便可以以后快速获取: /** * 获取屏幕的宽度和高度 * @returns {*} */ function client() { if(window.innerWidth){ // ie9+ 最新的浏览器 return { width: window.innerWidth, height: window.innerHeight } }else if(document.compatMode === "CSS1C

Android React Native自定义组件的流程

假设我们现在有这么一个需求,就是自定义一个组件,该组件由一个小图标和图标的文字说明组成,并且带有背景色,背景色可设置,宽度高度可设置.如下图所示正是两个这样的组件所组成. 首先,在index.android.js目录下新建一个js文件,命名为item.js,在里面输入模板代码 /** * Sample React Native App * https://github.com/facebook/react-native */ 'use strict'; var React = require('

react native 常用组件汇总

react-native-uploader //文件上传https://github.com/aroth/react-native-uploader jpush-react-native //官方版本 https://github.com/jpush/jpush-react-native react-native-jpush 由 React Native 中文网开发维护. https://github.com/reactnativecn/react-native-jpush pouchdb-re