Comments (4)
There are few reasons to keep this router "flat", predictability(or discoverability) is one of them.
Recently we implemented nested routes for "flat" router using pregeneration for routing table:
- every layout can have a named
slot
for one (or more) injected children - so these props are just added into routing table, and then passed to the Layout component
- recursively
Technically speaking there is no difference between this and navigation example - every route record can hold as much information as needed, including all component to be rendered as "nested routes" and all their props as well.
from react-resource-router.
Thanks! I think the issue I have with flat routing conceptually is that routing is a very "hierarchical" concept, and flat routing hides that hierarchy. I could potentially (as I think you've suggested) write my routes hierarchically and then use a function to flatten them out. It's not a great solution but I can understand if you feel that flat routing is a core idea of this router.
from react-resource-router.
It's more about two different metal models forming the base requirements. Let's imagine you want to defer transition to a new page until "some" stuff is loaded (like in old non-SPA sites or NextJS):
- (relay and nested routes).
useTranstion
+Suspense
, call it a day - (flat router) get information about route target, preload everything required, then perform the transition.
The outcome is (almost) the same, but realizations are different. And it order to support this, and many other patterns, without not yet production-ready Concurrent Mode you might need flat routing.
And here we are. Well, will be
from react-resource-router.
That makes sense! Thanks for taking the time to explain.
from react-resource-router.
Related Issues (20)
- Same requests are sent multiple time if previous one not resolved HOT 2
- Links with preload trigger fetch request even for resources on current route HOT 1
- react-resource-router does not render matched component on redirect or hash change with hashrouter HOT 1
- Do not expose a data key until loading has finished and there is no error to make more restful. HOT 4
- TypeScript@3 peer dependency? HOT 2
- push state HOT 1
- [Suggestion] Change `ResourceStoreContext` to use an interface instead of type so consumers can do declaration merging
- resolving peer dependency warnings for react 17 HOT 2
- update function should accept just new data HOT 1
- History stack introspection HOT 2
- Ability to respond to query parameter changes with a resource update HOT 2
- Breadcrumbs HOT 3
- Prefetching triggers refresh of expired resources
- Router state persists last value even when router is removed
- Stale while invalidate
- Support for fetch reference (e.g. for Relay)
- Allow transition delay
- Advice on how to do "nested" routing HOT 3
- withRouter types should add the additional props ( RouteContext & History )
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from react-resource-router.