Feature Request: Add `matchRoutes` Function
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 68/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- react, typescript
- Ambito
- frontend
Direzione di ricerca
Inizia individuando il codice esistente di Wouter per il matching delle route e le esportazioni pubbliche, quindi confronta il suo comportamento di matching con l’esempio proposto basato su regexparam. Il lavoro è completato quando matchRoutes viene esposto in modo da selezionare la route attiva per una location e supportare l’utilizzo documentato senza matching ridondante.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I’d like to request the addition of a matchRoutes function to Wouter. This function is available in react-router, and implementing it in Wouter should require minimal code.
Use Case
The matchRoutes function would allow users to find the active route based on the current location. This is particularly useful for handling layouts or route-based logic efficiently.
Example usage:
const routes = [
{ path: "/foo", component: <div>Foo</div> },
{ path: "/bar", component: <div>Bar</div>, layout: "red" },
];
const layouts = {
default: ({ children }) => <div>{children}</div>,
red: ({ children }) => <div style={{ backgroundColor: "red" }}>{children}</div>,
};
export default function App() {
const [location] = useLocation();
const activeRoute = matchRoutes(routes, location);
const Layout = activeRoute?.layout ? layouts[activeRoute.layout] : layouts.default;
return (
<Layout>
<Routes>
{routes.map((route) => (
<Route key={route.path} path={route.path} element={route.component} />
))}
</Routes>
</Layout>
);
}
Example Implementation
This is the implementation I currently use in my project.
(~160 bytes, unminified)
import { parse } from "regexparam";
function matchRoutes(routes, location) {
return routes.find((route) => {
const regex = parse(route.path);
return regex.pattern.test(location);
});
}
Having this built into the library would prevent redundant loops (like in my example implementation) when matching routes, as Wouter itself already performs route matching internally.
Would love to hear your thoughts on this! Thanks for the awesome work on Wouter! 🚀
- Lingua principale
- TypeScript
- Stelle
- 7.9k
- Fork
- 193
- Merge medio
- 6m
- PR unite (30g)
- 3
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di molefrog/wouter
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
-
Links using ~ do not respect `base`Forse già presa @molefrog l’ha presa 24 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
Tutte le issue di molefrog/wouter
Issue simili
-
b:minor bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
software-mansion/argent#1698 ·
I maintainer di solito rispondono entro 1 giorno
-
e2e-failure ready-to-code
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
redhat-developer/rhdh-plugin-export-overlays#4624 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
better-auth/better-auth#12132 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
automation missing-model model-sync provider:tinfoil
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
anomalyco/models.dev#12053 ·
I maintainer di solito rispondono entro 1 giorno
-
o8 next debug build aborts on Glass to Dark appearance switch (nil identifier messaged before check)Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
hurttlocker/o8#5112 ·