Czy jeśli np mam w React.js komponent <Header>, który służy do renderowania headera mogę w jakiś sposób ponownie go wyrenderować po zmianach w localStorage? Po pierwszym renderingu ponownie on się nie renderuje, ponieważ nic w nim się nie zmienia. Jednak po tym jak zostanie wpisane coś do localStorage chciałym ponownie go wyrenderować aby dodać pewny element do niego.
- Rejestracja:prawie 5 lat
- Ostatnio:ponad 4 lata
- Postów:394
localStorage emituje event, gdy coś się zmienia. Wystarczy, że to obsłużysz.
https://developer.mozilla.org/en-US/docs/Web/API/Window/storage_event
- Rejestracja:ponad 4 lata
- Ostatnio:ponad 4 lata
- Postów:7
@tsz: dzięki, ale co w tym evencie należałoby zrobić aby ponownie wybrany komponent wyrenderować?
I czy sessionStorage też coś takiego posiada?
Dodałem w componentDidMount event storage, ale w ogóle on się nie wykonuje przy wpisywaniu czegoś do localStorage. Dodam, że do localStorage wpisuje coś w innym komponencie.
- Rejestracja:prawie 5 lat
- Ostatnio:ponad 4 lata
- Postów:394
A jak to zaimplementowałeś? Ja właśnie sobie z powodzeniem strzeliłem takim eventem pomiędzy dwoma zakładami z 4P. Dla sessionStorage oczywiście też powinno działać.

- Rejestracja:prawie 5 lat
- Ostatnio:ponad rok
- Postów:85
@tsz: ale przecież ten event działa tylko w innych otwartych kartach:
The StorageEvent is fired whenever a change is made to the Storage object (note that this event is not fired for sessionStorage changes). This won't work on the same page that is making the changes — it is really a way for other pages on the domain using the storage to sync any changes that are made. Pages on other domains can't access the same storage objects.
Coś bajdurzysz :)
- Rejestracja:ponad 4 lata
- Ostatnio:ponad 4 lata
- Postów:7
Taki kod dodałem w headerze:
class Header extends Component {
componentDidMount() {
window.addEventListener("storage", this.storageEventHandler);
}
storageEventHandler(evt) {
alert("storage updated");
}
W innym komponencie do localStorage coś wpisuje po wysłaniu forma, ale alert się nie wyświetla.



Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.