2 回答
TA貢獻1831條經驗 獲得超9個贊
您可以使用以下代碼代替您在 storeRecord 組件中使用的 dispatch(push('/')) 。
window.location.assign('/');
TA貢獻1811條經驗 獲得超6個贊
您需要使用路由器模塊用于動態路由的相同歷史對象。
最簡單的解決方案是不使用 browserRouter,而是使用具有自定義歷史記錄的 Router
import React from 'react';
import { Router, Route, Switch } from 'react-router-dom';
import { createBrowserHistory } from 'history';
...
export const browserHistory = createBrowserHistory();
const AppRouter=()=>{
return(<Router history={browserHistory}>
<LoaderModal />
<Switch>
<Route path="/" exact component={LandingPage} />
<PublicRouter path="/register" exact component={SignupPage} />
<PublicRouter path="/login" exact component={LoginPage} />
<PrivateRoute path="/investment/new" exact component={InvestmentForm} />
<Route component={NotFoundPage} />
</Switch>
</Router>)
}
export default AppRouter;
然后你的動作看起來像
import { browserHistory } from '../router/router';
...
export const storeRecord=(data)=>{
return function(dispatch, getState){
const {authToken, userId} = getState().authReducer;
token= authToken;
data.userId = userId;
const url = 'investment/store';
apiCall(url, data, dispatch,'post').then((data)=>{
try{
if(data.status=== 200){
browserHistory.push('/');
}
}
catch(error){
console.log('returnedError',error);
}
}, (error)=>{console.log(error)});
}
}
添加回答
舉報
