Меню с подменем - кнопка «Аппаратная спина» подходит для первой страницы подменю, нажатой вместо страницы менюAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Меню с подменем - кнопка «Аппаратная спина» подходит для первой страницы подменю, нажатой вместо страницы меню

Сообщение Anonymous »

Просто начал обучение, реагируя Native (с помощью Expo)
У меня есть профиль. JSX в папке моего приложения. У него есть несколько подменю. Каждый подменю также имеет пользовательскую кнопку « index.jsx /> profile.jsxобразной />(profileMenu) folder

[*](category) folder

[*]product folder

[/list]
(auth) has _layout, signIn, login, guest and register jsx files
(profileMenu) has _layout, Favourites, Wallet, платеж , Настройки и т. Д. Также все файлы jsx.
в Профиль .jsx у меня есть элементы MENU MENU ( profilemenu ), что при щелчке с этим конкретным файлом JSX.
).

Код: Выделить всё

Я прикреплю необходимые фрагменты из всех соответствующих файлов, а также прикрепляет изображение моей структуры файла. Пожалуйста, помогите мне.  
[b]/app/_layout.jsx: [/b] 
[code]import { Ionicons } from "@expo/vector-icons";

export default function Layout() {
return (






);
}
profile.jsx->

Код: Выделить всё

//other imports etc.

const profile = () => {

const router = useRouter();

const handleMenuPress = (label) => {
const menuItems = [

{ icon: 'percent', label: 'Promotions',  },
{ icon: 'settings',label: 'Settings', },
{ icon: 'log-out', label: 'Logout', },
];
console.log(`Pressed: ${label}`);

switch (label) {
case 'Promotions':
router.push('/(profileMenu)/Promotions');
break;
case 'Settings':
router.push('/(profileMenu)/Settings');
break;
case 'Logout':
router.replace('/(auth)/signIn');
break;
default:
console.log('Unknown menu item');
}
}
return (

//other profile options line name etc...

{/* Menu Items */}


{menuItems.map((item, index) => {
const IconComponent = item.iconSet;
return (
 handleMenuPress(item.label)}
>
{item.label}

);
})}


);
};

;
export default profile
promotions.jsx:>

Код: Выделить всё

//imports
import { useRouter } from 'expo-router';

const Promotions = () => {
const router = useRouter();

const navigateToProfile = () => {
router.replace('/profile');
};
return (



← Back

Payments

Promotions

)
}

export default Promotions
settings.jsx:

Код: Выделить всё

//imports plus :
import { useRouter } from 'expo-router';

const Settings = () => {
const router = useRouter();

const navigateToProfile = () => {
router.replace('/profile');
};
return (



← Back

Settings 


Settings


)
}

export default Settings
in (profilemenu) Папка: _layout.jsx:

Код: Выделить всё

import { Stack } from 'expo-router';

export default function ProfileLayout() {
return (





);
}
(auth) _layout.jsx

Код: Выделить всё

export default function AuthLayout() {
return (






);
}
signin.jsx:>//imports
import { router } from 'expo-router';

const { width, height } = Dimensions.get('window');

const SignIn = () => {

const menuItems = [
{ id: 1, label: 'login', text: 'Login to Your Account' },
{ id: 2, label: 'register', text: 'Create an Accound' },
{ id: 3, label: 'guest' },
]
const handleMenuPress = (label) => {
if (label === 'login') {
router.push('/(auth)/login');
} else if (label === 'register') {
router.push('/(auth)/register');
} else if (label === 'guest') {
router.push('/(auth)/guest');
}
};

return (




Sign in to continue shopping





handleMenuPress(menuItems[0].label)}
>
{menuItems[0].text}


handleMenuPress(menuItems[1].label)}
>
{menuItems[1].text}



handleMenuPress('guest')}
>
Continue as Guest





)
}

export default SignIn;
< /code>
Структура файла: < /p>
Я пытался заменить весь файл дважды, я пытался использовать router.push (), а также router.replace (). Они оба не работали. Но по какой -то причине элемент меню «Выход» работает. < /P>
Я дважды заменил _layout.jsx в обоих (auth) и (profilemenu).>

Подробнее здесь: https://stackoverflow.com/questions/797 ... age-clicke
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»