Динамически обновлять реквизит с возможностью прокрутки в React Navigation MaterialTopTabNavigator (v5)

#react-native #react-native-navigation #react-navigation-v5

#react-native #react-native-navigation #react-navigation-v5

Вопрос:

В настоящее время я борюсь с динамическим обновлением реквизита с возможностью прокрутки в @react-navigation/material-top-tabs версии 5. То, что я пробовал, — это глобальное состояние, которое определяет, должны ли вкладки быть доступны для прокрутки или нет. isSwipeable Значение обновляется изнутри экрана в TabNavigator. В этом случае при нажатии на линейную диаграмму. Мой код:

 const { isSwipeable } = useContext(GlobalContext)

 return (
    <TopTab.Navigator swipeEnabled={isSwipeable} tabBar={(props) => <TabBar {...props} />}>
         <TopTab.Screen
             name="Screen1"
             component={Screen1Component}
             options={{
                 tabBarLabel: 'Screen1',
                 tabBarIcon: () => null
             }}
         />
        <TopTab.Screen
            name="Screen2"
            component={Screen2Component}
            options={{
                tabBarLabel: 'Screen2',
                tabBarIcon: () => null
            }}
        />
    </TopTab.Navigator>
)
 

Но это не приводит к динамическому обновлению swipeEnabled реквизита для навигатора вкладок.

Я также пытался использовать что-то вроде на экране вкладок:

  React.useLayoutEffect(() => {
    
    navigation.setOptions({})
}, [navigation])
 

Но здесь setOptions я могу изменить только табличную табличку, табикон и т. Д. что мне не очень помогает.

Комментарии:

1. Вы нашли решение этой проблемы? Столкнулся с той же проблемой, собирался попробовать использовать контекст React, но, похоже, у вас не было большого успеха в этом.

2. @Joe Нет, извините. Просто пошел, не проводя пальцем по вкладкам, потому что я не мог в этом разобраться