'How to update the router state on history.replace in react router?
My react router has state isActive(boolean) value. When I use the Link component to redirect to different route I can update the state as follows and its working fine:-
<Link to={{
pathname: "my-home-page",
search: '?query=abc',
state: { isActive: true }
}}>Go to Home</Link>
Also when I use history.push state is updating correctly bu using below code:-
history.push({
pathname: '/template',
search: '?query=abc',
state: {
isActive: true
}
});
However when I am using history.replace in javascript I am not able to update the state. I am trying the below code however its not working.
history.replace({ pathname: 'home', search: '?query=abc', isActive: true});
Anyone knows what I am doing wrong? Why my state is not updating while redirecting with history.replace
Solution 1:[1]
Try history.replace({ pathname: 'home', search: '?query=abc', state:{isActive: true}});
Solution 2:[2]
history.replaceState(stateObj, title, [url])
or
window.history.replaceState(stateObj, title, [url])
where,
- stateObj can be set to null
- title can be any title you want to show in browser
- url can be window.location.pathname
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Yue Qiu |
| Solution 2 | Shraddha J |
