React Navigation一次呈现所有选项卡

时间:2017-08-13 20:51:25

标签: javascript react-native react-navigation

我有一堆反应导航标签,其中一个打开相机。问题是当应用程序加载时,反应导航会立即呈现所有页面,因此即使我无法看到相机,相机也会打开。路由器文件只是一堆代表每个页面的StackNavigator对象,加载到TabNavigator对象中。

我怎样才能渲染我要去的页面,以便在不需要时相机不亮?

3 个答案:

答案 0 :(得分:0)

不知道您的具体设置,但TabNavigator的配置属性为lazy

文档(有时令人困惑)说明:

lazy: whether to lazily render tabs as needed as opposed to rendering them upfront

您可以找到文档here

注意:由于渲染而显示该视图时,您会注意到一些延迟。

希望这有帮助

答案 1 :(得分:0)

在BottomTabNavigatorConfig中

设置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>
    );
}