如何隐藏TabBarNavigator动态反应本机

How to Hide TabBarNavigator dynamically react native(如何隐藏TabBarNavigator动态反应本机)
本文介绍了如何隐藏TabBarNavigator动态反应本机的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找从UserScreen中隐藏bottomTabNavigatoronScoll的方法

这是我的userScreen

    function Users() {
    const {headerText, interestText, interestShell, interestsLayout, aboutText, userImage} = styles;

    return (
        <View>
            <ScrollView showsVerticalScrollIndicator={false}>
                <View style={{flex: 1}}>
                    <ProfileButton/>
                    <Image style={userImage} source={mockUsers[0].pictures[0]}/>
                    <UserProfileInfo/>
                </View>
                <View>
                    <Text style={headerText}>About</Text>
                    <View style={{marginLeft: 32}}>
                        <Text style={aboutText}>
                            {mockUsers[0].about}
                        </Text>
                    </View>
                    <Text style={headerText}>Interests</Text>
                    <View style={interestsLayout}>
                        {mockUsers[0].userInterests?.map((interest, index) => {
                            return (
                                <View style={interestShell}>
                                    <Text key={`interest-${index}`} style={interestText}>{interest}</Text>
                                </View>
                            )
                        })}
                    </View>
                    <Text style={headerText}>Questions and answers</Text>
                    <AnsweredQuestionInput/>
                    <AnsweredQuestionInput/>
                    <AnsweredQuestionInput/>
                    <Text style={headerText}>Pictures</Text>
                    <Pictures userPictures={mockUsers[0].pictures} blur={true}/>
                </View>
            </ScrollView>
            <LikeAndDislike/>
        </View>

    );
}

这是我的bottomTabNavigator

    function BottomTabNavigator() {
    const {buttonShell, buttonText} = styles;
    const Tab = createBottomTabNavigator();
    const Icon = createIconSet(glyphMap, 'Fuze', 'Fuze.ttf');

    return (
        <Tab.Navigator
            initialRouteName="Users"
            screenOptions={({route}) => ({
                headerShown: false,
                tabBarShowLabel: false,
                tabBarStyle: {borderColor: '#DBDBDB', height: 88, paddingTop: 16},
            })}
        >
            {
                bottomTabs.map((bottomTab) => {
                        return (
                            <Tab.Screen
                                key={`screen-${bottomTab.title}`}
                                name={bottomTab.title}
                                component={bottomTab.componentName}
                                options={{
                                    unmountOnBlur: true,
                                    tabBarIcon: (({focused}) => {
                                        return !focused ?
                                            <Icon name={bottomTab.icon} size={32}/> :
                                            <View style={buttonShell}>
                                                <Text style={buttonText}>{bottomTab.title}</Text>
                                            </View>

                                    })
                                }}
                            />
                        )
                    }
                )
            }
        </Tab.Navigator>
    )
}
到目前为止,我一直在研究,发现Reaction导航删除了tabBarVisible选项,我看到人们隐藏屏幕的唯一其他方式是通过screenOptions上的css设置display: 'none' 我很想找到一种方法来从用户屏幕上传递一个如果滚动返回TRUE,然后根据布尔值设置显示。任何帮助都是绝妙的。谢谢

推荐答案

在Reaction导航中,他们已将删除,而代之以tabBarStyles: {display: 'none'}。因此,我将usersScreen中的代码更新为:

function Users() {
const navigation = useNavigation();

const hideTabBar = () => {
    navigation.setOptions({
        tabBarStyle: {display: 'none'},
    });
};

const showTabBar = () => {
    navigation.setOptions({
        tabBarStyle: {display: 'flex', borderColor: '#DBDBDB', height: 88, paddingTop: 16},
    });
};

useEffect(() => hideTabBar(), [])

return (
    <View>
        <ScrollView
            showsVerticalScrollIndicator={false}
            onMomentumScrollEnd={() => showTabBar()}
            onMomentumScrollBegin={() => hideTabBar()}
        >
           //some code//
        </ScrollView>
        <LikeAndDislike/>
    </View>
);
}

这篇关于如何隐藏TabBarNavigator动态反应本机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)