Создайте useEffect, который прослушивает изменение события хранилища и присоединяет функцию, которая запускается при событии изменения.
useEffect(() => {
window.addEventListener("storage", e => storageChange(e));
return () => {
window.removeEventListener('storage', e => storageChange(e));
};
})
const storageChange = (storageEvent: StorageEvent) => {
if (storageEvent.key === keyNameConst) {
//do something
}
}
С вашим кодом:
const App = () => {
const [isUser, setIsUser] = useState(false);
const [user, setUser] = useState("");
useEffect(() => {
window.addEventListener("storage", e => storageChange(e));
return () => {
window.removeEventListener('storage', e => storageChange(e));
};
},[storageChange])
const storageChange = (storageEvent: StorageEvent) => {
if (storageEvent.key === "user") {
const user = JSON.parse(storageEvent.newValue);
setUser(user);
setIsUser(true);
}
}
return (
<Provider store={store}>
<div>
<Router />
</div>
</Provider>
);
};
export default App;