Som nováčikom v reakcii so štruktúrou Redux a jej koncepciou. V mojej aplikácii musím prejsť určitú cestu v akcii po prihlásení. Môj akčný kód je:
const login = (resp:Object) => (dispatch: any) =>{
// api call
if(apiCall is success){
window.location.href = "http://localhost:3000"+localStorage.getItem("pathBeforeLogin");
}
else{
window.location.href = "http://localhost:3000/login";
}
});
}
Tento kód funguje dobre, ale môj senior ma požiadal, aby som túto prácu vykonal bez použitia window.location.href
, Ako používame reaktor-router v4, browserHistory.push tiež nefunguje.
odpovede:
1 pre odpoveď č. 1reagovať smerovača Redux poskytuje middleware Redux, ktorý vám umožňuje navigovať pomocou akcií Redux.
z https://github.com/reactjs/react-router-redux:
import { createStore, combineReducers, applyMiddleware } from "redux";
import { routerMiddleware, push } from "react-router-redux";
// Apply the middleware to the store
const middleware = routerMiddleware(browserHistory);
const store = createStore(
reducers,
applyMiddleware(middleware)
);
// Dispatch from anywhere like normal.
store.dispatch(push("/foo"));
Takže vo vašom príklade namiesto priradenia reťazcov k window.location.href by ste urobili nasledovné:
store.dispatch(push("/login"));