refactor(web): remove eslint-disable from useBreadcrumb via ref (#54)
This commit is contained in:
@@ -1,12 +1,15 @@
|
|||||||
import { useContext, useEffect } from "react";
|
import { useContext, useEffect, useRef } from "react";
|
||||||
|
|
||||||
import { BreadcrumbContext, type BreadcrumbItem } from "./breadcrumb-context";
|
import { BreadcrumbContext, type BreadcrumbItem } from "./breadcrumb-context";
|
||||||
|
|
||||||
export function useBreadcrumb(trail: BreadcrumbItem[]): void {
|
export function useBreadcrumb(trail: BreadcrumbItem[]): void {
|
||||||
const { setTrail } = useContext(BreadcrumbContext);
|
const { setTrail } = useContext(BreadcrumbContext);
|
||||||
const key = trail.map((i) => `${i.label} ${i.to ?? ""}`).join("");
|
const trailRef = useRef(trail);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setTrail(trail);
|
trailRef.current = trail;
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
});
|
||||||
|
const key = JSON.stringify(trail.map((item) => [item.label, item.to ?? null]));
|
||||||
|
useEffect(() => {
|
||||||
|
setTrail(trailRef.current);
|
||||||
}, [key, setTrail]);
|
}, [key, setTrail]);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user