mithril.js
mithril.js copied to clipboard
Simplify the router to just use render functions
Mithril version:
Browser and OS:
Project:
Is this something you're interested in implementing yourself? Very.
Description
Change the routes in the router to just be "route": (attrs) => vnode
functions.
// Current
m.route(elem, "/", {
"/": Home,
"/foo/:id": FooView,
})
// Proposed
m.route(elem, "/", {
"/": () => m(Home),
"/foo": ({id}) => m(FooView, {id}),
})
This would also entail making m.route.SKIP
work with the render function, so we can retain that core functionality.
Why
Simplifies our router API greatly. Together with a built-in Async
component, this covers the full API for route resolvers in a way that's just generally more flexible and pluggable for users. It's also simpler to implement.
Possible Implementation
Open Questions
This is unnecessary.
- Provides unnecessary addition to framework
- Doesn't create any better code habits. "don't fix what isn't broken"