У меня есть профиль. 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 (
);
}
Код: Выделить всё
//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
Код: Выделить всё
//imports
import { useRouter } from 'expo-router';
const Promotions = () => {
const router = useRouter();
const navigateToProfile = () => {
router.replace('/profile');
};
return (
← Back
Payments
Promotions
)
}
export default Promotions
Код: Выделить всё
//imports plus :
import { useRouter } from 'expo-router';
const Settings = () => {
const router = useRouter();
const navigateToProfile = () => {
router.replace('/profile');
};
return (
← Back
Settings
Settings
)
}
export default Settings
Код: Выделить всё
import { Stack } from 'expo-router';
export default function ProfileLayout() {
return (
);
}
Код: Выделить всё
export default function AuthLayout() {
return (
);
}
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