Часть 3. Закрытие раскрытий вручную
В этой части мы собираемся создать пользовательский компонент в качестве кнопки раскрытия информации.
Сначала в папке компонентов создайте MyLink.js.
import React from 'react' const MyLink = React.forwardRef(({ onClick, href }, ref) => { return ( <a href={href} onClick={onClick} ref={ref}> MyLink</a> ) }) export default MyLink
Затем под панелью Disclosure.Panel добавьте кнопку Disclosure.Button и отобразите ее как ‹MyLink›, href= "/home"
<Disclosure.Panel className="px-4 pt-4 pb-2 text-sm text-gray-500"> Yes! You can purchase a license that you can share with your entire team. <Disclosure.Button as={MyLink} href="/home"> Home </Disclosure.Button> </Disclosure.Panel>
В папке pages создайте home.js
import React from 'react' const home = () => { return ( <div>home</div> ) } export default home
Поэтому, когда пользователь нажимает кнопку MyLink. Он закроет раскрытие и перейдет на домашнюю страницу.
React.forwardRef
ссылка
Из официальной документации: if-the-child-is-a-function-component показывает правильный путь, когда вы заключаете пользовательский компонент функции в Link
.
- Добавьте атрибут
passHref
вLink
. - Оберните свой компонент пользовательской функции с помощью
React.forwardRef
.
Однако NavbarBrand
не является компонентом, которым вы можете манипулировать. Вы можете создать собственный компонент для обертывания NavbarBrand
. Это, наверное, нравится
const CustomNavbarBrand = React.forwardRef(({ onClick, href }, ref) => {
return (
<NavbarBrand href={href} onClick={onClick} ref={ref}>
Click Me
</NavbarBrand>
)
})
<Link href="/">
<CustomNavbarBrand>{APP_NAME}</CustomNavbarBrand>
</Link>
Если вам понравилась эта история, вам также может понравиться подписка на Medium. Это всего 5 долларов в месяц (цена чашки кофе!), но это даст вам неограниченный доступ к историям, поддерживая ваших любимых писателей. Если вы зарегистрируетесь по этой ссылке, я получу небольшую комиссию. Спасибо!
Подписывайтесь на нас: YouTube, Medium, Udemy, Linkedin, Twitter, Instagram, Gumroad, Quora, Telegram.
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord. Заинтересованы в Взлом роста? Ознакомьтесь с разделом Схема.