Часть 4. Создание пользовательской кнопки для управления открытием и закрытием меню
В этой статье мы собираемся создать собственную кнопку для управления открытием и закрытием меню.
Во-первых, нам нужно добавить React Recoil.
yarn add recoil
В _app.js импортируйте RecoilRoot из Recoil, затем используйте компонент ‹RecoilRoot›, чтобы обернуть ‹Component›.
import { RecoilRoot } from 'recoil' import '../styles/globals.css' function MyApp({ Component, pageProps }) { return ( <RecoilRoot> <Component {...pageProps} /> </RecoilRoot>) } export default MyApp
Создать MenuAtom.js
Создайте menuAtom.js в «папке атомов».
import { atom } from "recoil"; export const openState = atom({ key: 'openState', // unique ID (with respect to other atoms/selectors) default: false, // truedefault value (aka initial value) });
Внутри MyDropdown.js импортируйте useRecoilState и openState.
import { useRecoilState } from 'recoil' import { openState } from '../atoms/menuAtom' export default function MyDropdown() { const items = [{ name: "account", disabled: false }, { name: "info", disabled: false }, { name: "signout", disabled: true }, { name: "register", disabled: false }] const [isOpen, setIsOpen] = useRecoilState(openState) return ( ...
Затем зайдите внутрь index.js.
import { useRecoilState } from 'recoil' import { openState } from '../atoms/menuAtom' import MyDropdown from '../components/MyDropdown' export default function Home() { const [isOpen, setIsOpen] = useRecoilState(openState) return ( <div className="bg-blue-100 h-screen"> <button onClick={()=>setIsOpen(!isOpen)}>custom button</button> <MyDropdown/> </div> ) }
Если вам понравилась эта история, вам также может понравиться подписка на Medium. Это всего 5 долларов в месяц (цена чашки кофе!), но это даст вам неограниченный доступ к историям, поддерживая ваших любимых писателей. Если вы зарегистрируетесь по этой ссылке, я получу небольшую комиссию. Спасибо!
Подписывайтесь на нас: YouTube, Medium, Udemy, Linkedin, Twitter, Instagram, Gumroad, Quora, Telegram.
Присоединяйтесь к партнерам, чтобы зарабатывать деньги
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.