Wie würde ich den aktuellen Pfad und die Abfrage des aktuellen Standortes mit Redux-Router in Reducer bekommen. Ich bin in der Lage, den Pfadnamen leicht innerhalb der Komponente mit mapStateToProps zu erhalten, aber ich möchte auf den aktuellen Pfad in Reducer zugreifen. Ich verwende redux-router 1.0.0-beta7, react-router 1.0.3.Zugriff auf den aktuellen Standort im Reducer (Redux-Router)?
Antwort
.way - pass Pfadnamen besonders Aktion durch redux-thunk und getState()
const someAction = data =>(dispatch,getState)=>{
dispatch({
type:'SOME_ACTION',
pathname:getState().router.pathname
})
}
.way - Middleware schreiben und Pfadnamen mit jeder Aktion passieren
///write middleware
export const attachPathNameToAction = store => next => action=>{
action.pathname = store.getState().router.pathname //<-----passing pathname
next(action)
};
///then in reducer you allways can get pathname
case 'SOME_ACTION':
let pathname = action.pathname \\ <-------------
return {...state, action.data}
.way - Pass Pfadname aus Komponente this.props.location.pathname
//in component
let {pathname}= this.props.location;
this.props.someAction(data, pathname);
//workflow: component -> action -> reducer
Die Middleware-Lösung ist großartig! Dank dafür. Ich frage mich wirklich, warum sie kein Plugin dafür haben. – Tomer
Beachten Sie, dass es '... .router.location.pathname' ist, nicht' ... .router.pathname'. –
vielleicht können Sie Pfad in Minderer durch Aktion creater passieren? –
Warum sollten Sie die "Quelle der Wahrheit" des aktuellen Pfads duplizieren? Wenn Sie Zugriff auf den aktuellen Pfad benötigen, holen Sie ihn einfach von "Requisiten", da "Router" automatisch übergeben wird. Router ist die Quelle der Wahrheit für die Routenposition, es ist nicht notwendig, dies in redux zu duplizieren. Wenn Sie es vom Autor Redux hören müssen, sehen Sie sich das an: https://egghead.io/lessons/javascript-redux-filtering-redux-state-with-react-router-params – lux
So funktioniert [redux-router] (https://github.com/acdlite/redux-router#differences-with-react-router-redux) funktioniert –