Wie kann man den vollständigen Routerverlauf eines Benutzers, der eine SSR react-redux App besucht, beibehalten? Ich habe versucht, die reducer.js-Datei des reactive-redux-router-Pakets als solche zu modifizieren ... aber wenn der Benutzer über SSR lädt, wird das History-Array zurückgesetzt.Store browserHistory mit history.js in react redux Architektur mit SSR
/**
* This action type will be dispatched when your history
* receives a location change.
*/
export const LOCATION_CHANGE = '@@router/LOCATION_CHANGE'
const initialState = {
locationBeforeTransitions: null,
locationHistory: []
}
/**
* This reducer will update the state with the most recent location history
* has transitioned to. This may not be in sync with the router, particularly
* if you have asynchronously-loaded routes, so reading from and relying on
* this state is discouraged.
*/
export function routerReducer(state = initialState, { type, payload } = {}) {
if (type === LOCATION_CHANGE) {
return { ...state,
locationBeforeTransitions: payload,
locationHistory: state.locationHistory.concat([payload]) }
}
return state
}
ref: https://github.com/reactjs/react-router-redux/blob/master/src/reducer.js
Aber ich denke, diese soll in einer Middleware erreicht werden.
Unerwarteterweise scheint das (Speichern der gesamten vorherigen Sitzungshistorie) wie ein gemeinsamer genug Anwendungsfall, dass vielleicht jemand eine Best Practice bereits formuliert hat.
Vielleicht ist sogar diese vollständige Geschichte über das Objekt historyjs in react-router ohne react-router-redux erreichbar.
Ich bin auf der Suche nach Antworten, wie Sie den vollständigen Verlauf der Sitzung eines Benutzers im Redux-Status speichern und auf meinem API-Server veröffentlichen, wenn der Benutzer den Browser schließt oder von der Site weg navigiert. (Wenn das nicht möglich ist, könnte ich es einfach bei jeder Navigation posten.) Dann möchte ich diesen Verlauf in einer "kürzlich angesehenen" Liste von Seiten auf den Homepages der Benutzer zeigen.