我有一堆反应导航标签,其中一个打开相机。问题是当应用程序加载时,反应导航会立即呈现所有页面,因此即使我无法看到相机,相机也会打开。路由器文件只是一堆代表每个页面的StackNavigator对象,加载到TabNavigator对象中。
我怎样才能渲染我要去的页面,以便在不需要时相机不亮?
答案 0 :(得分:0)
不知道您的具体设置,但TabNavigator的配置属性为lazy
。
文档(有时令人困惑)说明:
lazy: whether to lazily render tabs as needed as opposed to rendering them upfront
您可以找到文档here
注意:由于渲染而显示该视图时,您会注意到一些延迟。
希望这有帮助
答案 1 :(得分:0)
设置lazy:false
答案 2 :(得分:0)
我遇到了几乎相同的问题-我的应用程序的一个主要标签中使用了相机。
您可以在'@ react-navigation / native'中使用'useFocusEffect':
https://reactnavigation.org/docs/use-focus-effect/
这里是一个示例:
import React, { useState} from 'react';
import { useFocusEffect } from '@react-navigation/native';
export default function cameraOnFocusOnly() {
const [cameraActive, setCameraActive] = useState(false);
useFocusEffect(
React.useCallback(() => {
// Do something when the screen is focused
setCameraActive(true);
return () => {
// Do something when the screen is unfocused
setCameraActive(false);
};
}, [])
);
return (
<View>
{cameraActive && <CameraComponent/>}
</View>
);
}