mirror of
https://github.com/vercel/commerce.git
synced 2025-05-18 23:46:58 +00:00
Removing useEffects that have no side effect and alter the state.
This commit is contained in:
parent
2fe1527bea
commit
b38b40aa4e
@ -4,15 +4,10 @@ import clsx from 'clsx';
|
|||||||
import { Menu } from 'lib/shopify/types';
|
import { Menu } from 'lib/shopify/types';
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
import { usePathname } from 'next/navigation';
|
import { usePathname } from 'next/navigation';
|
||||||
import { useEffect, useState } from 'react';
|
|
||||||
|
|
||||||
const FooterMenuItem = ({ item }: { item: Menu }) => {
|
const FooterMenuItem = ({ item }: { item: Menu }) => {
|
||||||
const pathname = usePathname();
|
const pathname = usePathname();
|
||||||
const [active, setActive] = useState(pathname === item.path);
|
const active = pathname === item.path;
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
setActive(pathname === item.path);
|
|
||||||
}, [pathname, item.path]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<li>
|
<li>
|
||||||
|
@ -16,6 +16,17 @@ export default function MobileMenu({ menu }: { menu: Menu[] }) {
|
|||||||
const openMobileMenu = () => setIsOpen(true);
|
const openMobileMenu = () => setIsOpen(true);
|
||||||
const closeMobileMenu = () => setIsOpen(false);
|
const closeMobileMenu = () => setIsOpen(false);
|
||||||
|
|
||||||
|
const [prevPathname, setPrevPathname] = useState(pathname);
|
||||||
|
const [prevSearchParams, setPrevSearchParams] = useState(searchParams);
|
||||||
|
if (prevPathname !== pathname) {
|
||||||
|
setPrevPathname(pathname);
|
||||||
|
setIsOpen(false);
|
||||||
|
}
|
||||||
|
if (!Object.is(prevSearchParams, searchParams)) {
|
||||||
|
setIsOpen(false);
|
||||||
|
setPrevSearchParams(searchParams);
|
||||||
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const handleResize = () => {
|
const handleResize = () => {
|
||||||
if (window.innerWidth > 768) {
|
if (window.innerWidth > 768) {
|
||||||
@ -26,10 +37,6 @@ export default function MobileMenu({ menu }: { menu: Menu[] }) {
|
|||||||
return () => window.removeEventListener('resize', handleResize);
|
return () => window.removeEventListener('resize', handleResize);
|
||||||
}, [isOpen]);
|
}, [isOpen]);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
setIsOpen(false);
|
|
||||||
}, [pathname, searchParams]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<button
|
<button
|
||||||
|
@ -10,10 +10,16 @@ import { FilterItem } from './item';
|
|||||||
export default function FilterItemDropdown({ list }: { list: ListItem[] }) {
|
export default function FilterItemDropdown({ list }: { list: ListItem[] }) {
|
||||||
const pathname = usePathname();
|
const pathname = usePathname();
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const [active, setActive] = useState('');
|
|
||||||
const [openSelect, setOpenSelect] = useState(false);
|
const [openSelect, setOpenSelect] = useState(false);
|
||||||
const ref = useRef<HTMLDivElement>(null);
|
const ref = useRef<HTMLDivElement>(null);
|
||||||
|
|
||||||
|
const active =
|
||||||
|
list.findLast(
|
||||||
|
(listItem: ListItem) => (
|
||||||
|
('path' in listItem && pathname === listItem.path) ||
|
||||||
|
('slug' in listItem && searchParams.get('sort') === listItem.slug)
|
||||||
|
))?.title ?? '';
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const handleClickOutside = (event: MouseEvent) => {
|
const handleClickOutside = (event: MouseEvent) => {
|
||||||
if (ref.current && !ref.current.contains(event.target as Node)) {
|
if (ref.current && !ref.current.contains(event.target as Node)) {
|
||||||
@ -25,17 +31,6 @@ export default function FilterItemDropdown({ list }: { list: ListItem[] }) {
|
|||||||
return () => window.removeEventListener('click', handleClickOutside);
|
return () => window.removeEventListener('click', handleClickOutside);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
list.forEach((listItem: ListItem) => {
|
|
||||||
if (
|
|
||||||
('path' in listItem && pathname === listItem.path) ||
|
|
||||||
('slug' in listItem && searchParams.get('sort') === listItem.slug)
|
|
||||||
) {
|
|
||||||
setActive(listItem.title);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, [pathname, list, searchParams]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="relative" ref={ref}>
|
<div className="relative" ref={ref}>
|
||||||
<div
|
<div
|
||||||
|
Loading…
x
Reference in New Issue
Block a user