#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>
на всех экранах?