react icon indicating copy to clipboard operation
react copied to clipboard

{location: 'replace'} doesn't work in stateService.go(stateName, params, {location: 'replace'})

Open Fangfanghao opened this issue 1 year ago • 1 comments

Hi, In my demo, I did this: index.tsx:

ReactDOM.render(
    <UIRouter router={router}>
        <div>
            <h1>Dynamic Example</h1>
            <UIView />
        </div>
    </UIRouter>,
    document.querySelector('#root'),
);

router.config.ts:

export const router = new UIRouterReact();
const plugins = [
    servicesPlugin,
    hashLocationPlugin,
];
plugins.forEach(plugin => {
    router.plugin(plugin);
});

// Register the initial (eagerly loaded) states
states.forEach((state) => router.stateRegistry.register(state));

When I call

let num = 1;
const DynamicExample: ReactStateDeclaration = {
   name: 'dynamic',
   url: 'dynamic/?queryParam1',
   component: (props) => {
       const $state = props.transition.router.stateService;
       return (
           <button
               onClick={() => {
                   $state.go('dynamic', { queryParam1: num++ }, { location: 'replace'});
               }}
           >
               only change queryParam1
           </button>
       );
   }}

in my code, the history.length still increased.

Correct me if I'm wrong. Thank you.

Fangfanghao avatar Mar 12 '24 03:03 Fangfanghao

I just found that this works as expected(replace history):

stateService.go(stateName, params, {source: 'url'})

I know 'stateService' is from '@uirouter/core'. Maybe I should go to create an issue there.

Fangfanghao avatar Mar 12 '24 05:03 Fangfanghao