когда нет?
ну вот такой пример банальный:
const withMainLink=( Component ) =>{
return () => <Component>
<Link to="/">Main page</Link> <div></div>
</Component>
;
}
const StatsNav = (props) => {
return (
<nav>
{props.children}<span>Users Statistics</span>
</nav>
)
}
withMainLink(StatsNav);
withMainLink(UserNav);
etc...
такое себе ?
никогда не оправдано если у вас не легаси
Блин, вот я сижу на англоязычных и русскоязычных каналах, и только тут люди позволяют себе такие категоричные заявления.
можете оспорить это категоричное заявление?
понял cпс, одному компоненту одну nav верстать , второму вторую , и не мутить пытаясь сколотить для их двоих что-то типо HOC или Slots ну я пытался попрактиковать эти паттерны точнее, понять где их использовать , но ни один особо не подходит то что я хотел сделать.
Опишите решаемую задачу, скорее всего ее проще решить без хока, простой композицией
ну вчера я вроде скидывал ну вот смотри есть ' / " на этом роуте есть линка stats , клик на неё переходим '/stats' включаем компонент Stats , там есть навигация такого вида : <nav> <Link > Main Stats< /Link> <span>Statistics<span> </nav> на странице этой есть таблица юзерами клик по юзеру переходим на страницу юзера '/stats/23' тут уже немного другая навигация <nav> <Link > Main Stats< /Link> <Link>Statistics<Link> <span>User Full Name</span> <nav> потом бы ещё например на read full bio клик '/stats/23/bio': <nav> <Link > Main Stats< /Link> <Link>Statistics<Link> <Link>User Full Name</span> <Link> <span> Bio</span> не знаю может вообще эти подходы hoc и slots тут не приделах, просто решил именно тут попробовать использовать их. по сути я каждый в эту навигацию куски вёрстки добавляю по мере углубления - наверно с таких соображений.
Лучше не использовать хоки для рендера ЮИ — лучше хранить логику рендера всё-таки в рендере. Почему бы тебе не сделать отдельный компонент навигации, который сам будет рисовать нужные ссылки в зависимости от текущего роута? Не совсем понятно что именно тебе нужно
Я бы наверное реализовал компонент который хранит навигацию, который через паттер матчинг подсовует необходимый лейаут
вот спасибо, https://www.npmjs.com/package/react-pattern-matching вот это он? но вёртску навигации для каждого роута вложености мне свою то делать, автоматизировaть её то не получиться?
я говорил не про либу а про подход, есть даже пропосал прям в язык
супер , только не знаю насколько правильно проверку путей так делать , вот что-то накидал export const Nav = (props) => { const { selectedUser } = useSelector(state=>state); return { '/stats': <StatsNav />, [`/stats/${selectedUser.id}`]: <UserNav setModal={props.setModal}/> }[props.location.pathname] || null };
ну мне код нравится такой но часто моим колегам нет😅 так что зависит от ваших тиммейтов
Обсуждают сегодня