TehShrike / abstract-state-router

Like ui-router, but without all the Angular. The best way to structure a single-page webapp.

Home Page:http://tehshrike.github.io/state-router-example

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

URL is not updated when a default child state is used

TehShrike opened this issue · comments

Reported in TehShrike/riot-state-renderer#5 , I have added some failing tests in the change-route-on-default-child branch.

So I guess before I dive in any further, the philosophical discussion - do we want the route to change to reflect any default states that are displayed?

I vaguely remember thinking about this in the past, and I guess I decided that I was fine with it not updating the route. But that's not terribly intuitive, so if we decide to keep it that way, at the very least the documentation should be made more clear.

Do you have any thoughts @ArtskydJ or @thebearingedge?

I think it should update the route to include the default child. If someone doesn't want that, they can maybe keep the route undefined, depending on how their states are set up.

  • Let's say you have state a that has the route /a with a default child of b that has the route /b with a default child of c that has the route /c.
  • Let's say that each of these routes have other children too.
  • The way it is now, if you go to #/a you get a nice short route.
  • The other way, if you go to #/a you get #/a/b/c. This could get long, and be considered ugly.
  • But the way it is now, #/a, #/a/b, and #/a/b/c all point to the same state. This could be confusing.

I think that states it well. I'm inclined to agree.

The hash should reflect the app state as much as possible. If I can set b as the default child of a but leave b's route undefined or as an empty string I'm good.