Встроенная навигация с реакцией переносит все экраны в представление

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

#javascript #react-native #реагирующая навигация #react-navigation-v5

Вопрос:

Используя react-navigation v5, как можно переносить все экраны по отдельности в режиме прокрутки и в режиме безопасности клавиатуры?

 export default function App() {
  return (
      <NavigationContainer>
        <Stack.Navigator initialRouteName="Home">
          <Stack.Screen name="Home" component={HomeScreen} />
          <Stack.Screen name="Test" component={TestScreen} />
        </Stack.Navigator>
      </NavigationContainer>
  );
}
  

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

1. Добавьте ScrollView внутри компонента HomeScreen и TestScreen, а не в App.js .

Ответ №1:

Внутри навигационного контейнера вам разрешено использовать только Navigator или Screen. Таким образом, вы не можете переносить Stack.Screen ни с каким другим компонентом.

Что вы можете сделать, так это обернуть компонент экрана:

ScreenTemplate Возможно, создайте новый компонент, вы можете выбрать имя. Затем используйте этот компонент для реализации логики обхода клавиатуры и прокрутки.

 const ScreenTemplate = ({children}) => (
   <AnyWrapperComponent>
      {children}
   </AnyWrapperComponent> 
);
  

На любом другом экране:

 const HomeScreen = () => (
   <ScreenTemplate>
     //implement anything you want
      <BlaBlaComponent />
    //etc..
   </ScreenTemplate>
);
  

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

1. Обычный способ: <Stack.Screen name="Home" component={HomeScreen} /> . Есть ли какой-либо способ перейти ScreenTemplate непосредственно к экрану component и указать его дочерний элемент (рабочий стол)? Чтобы избежать повторения <ScreenTemplate> на всех экранах?