fix: router state transition

garbage collect unused reuse object
new state: injecting-to-reuse
use replace argument in navigate to keep history stack