反应原生如何检查组件当前是不是显示在屏幕中

Posted

技术标签:

【中文标题】反应原生如何检查组件当前是不是显示在屏幕中【英文标题】:react native how to check if Component current show in screen反应原生如何检查组件当前是否显示在屏幕中 【发布时间】:2016-12-29 21:23:28 【问题描述】:

在我的 React native 项目中,我需要检查组件何时显示在屏幕中以通过后台线程更新 UI。

我查看了组件道具规格并尝试了componentWillUnmount,componentWillMount,但它不适用于我的情况。

我也尝试过使用navigator.getCurrentRoutes(),但它返回空对象。

请帮我解决这个案子!

【问题讨论】:

为什么componentWillMount/componentWillUnmount 不起作用?这看起来是正确的做法。 你能提供更多关于你的 reactNative 项目的信息吗?一般情况下,componentWillMount 是正确的做法。 @ManoloSantos 我使用 F8 示例,登录 componentWillMount/componentWillUnmount ,但显示的唯一内容是 componentWillMount,导航到另一个屏幕并返回此屏幕后,没有任何反应,我想检查什么时候特别屏幕中显示的组件电流。 @JeffPChacko componentWillMount 工作正常,但它会发生一次,当我导航到另一个屏幕并且当前屏幕隐藏时,我如何检查组件是隐藏还是显示? 【参考方案1】:

如果你使用 react-navigation 你可以试试 useFocusEffect useFocusEffect

但是如果你不使用它,你可以订阅一个View的onLayout事件。每当您的组件被挂载或屏幕布局发生变化时,它都会触发。 React Native onLayout

【讨论】:

这个问题是 5 年前提出的。 react-navigation repo 的第一次提交是在 2017 年,所以我怀疑 OP 是否在使用它。他可能一直在使用wix 的替代方案。 @Moistbobo:很好。也就是说,如果这为今天遇到类似问题的人提供了解决方案,我不确定当 OP 最初提出问题时它是否相关。 @JeremyCaney 可以理解,感谢提醒我*** 的用途。 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review

以上是关于反应原生如何检查组件当前是不是显示在屏幕中的主要内容,如果未能解决你的问题,请参考以下文章

打开地图屏幕时,如何将 MapView 以用户当前位置为中心?反应原生博览会

在所有SwiftUI版本(1.0-4.0)中原生实现Charts图表视图之思路

反应原生检查平板电脑或屏幕是不是以英寸为单位

渲染两个 RNCamera 组件时反应原生应用程序给出空白屏幕

SwiftUI 4.0 中原生图表(Charts)实现超长内容滚动功能

SwiftUI 4.0 中原生图表(Charts)实现超长内容滚动功能