Node.js history.push不工作等待或同步,直到单击按钮
我尝试使用“history.push()”导航页面而不刷新,它只在被人通过按钮点击时工作。它不会以编程方式工作。它只是在更新url,而不是在浏览器中导航Node.js history.push不工作等待或同步,直到单击按钮,node.js,reactjs,react-router,Node.js,Reactjs,React Router,我尝试使用“history.push()”导航页面而不刷新,它只在被人通过按钮点击时工作。它不会以编程方式工作。它只是在更新url,而不是在浏览器中导航 //Index.js ReactDOM.render(<Router history={history}><App /></Router>, document.getElementById('root')); //App.js <Switch> <Route
//Index.js
ReactDOM.render(<Router history={history}><App /></Router>, document.getElementById('root'));
//App.js
<Switch>
<Route path="/" exact strict component={Login}/>
<Route path="/Homepage" exact strict component={Homepage}/>
</Switch>
//History.js
import {createBrowserHistory} from 'history'
export default createBrowserHistory();
在同步或等待功能内时不工作
//Not Working
const wait=ms=>new Promise(resolve => setTimeout(resolve, ms));
wait(4*1000).then(() => {
history.push('/Homepage');
});
您没有正确设置路由器的历史记录
<Router history={history} />
您没有正确设置路由器的历史记录
<Router history={history} />
@TahaFarooqui我想您使用的是浏览器路由器
,而不是普通的路由器
?如果你想使用自定义历史记录,那么你需要将它们切换出去@TahaFarooqui是的,所以不要导入浏览器路由器
,只需导入路由器
。此外,FWIW您不必创建自己的历史记录来利用历史记录。推送,如果您希望将浏览器历史记录与状态管理同步(例如Redux/Mobx等),通常会使用这种方法。我是否应该使用react router dom中的useHistory?@TahaFarooqui,useHistory可能值得一看。。。以下是作者对此的讨论…>提醒:useHistory钩子是我们正在开发的未来钩子的快速权宜之计:useNavigate。。。{snipped}。。。我们现在提供useHistory是为了尽可能轻松地迁移使用历史API的现有代码。@TahaFarooqui我想您当时使用的是浏览器路由器
,而不是普通的路由器
?如果你想使用自定义历史记录,那么你需要将它们切换出去@TahaFarooqui是的,所以不要导入浏览器路由器
,只需导入路由器
。此外,FWIW您不必创建自己的历史记录来利用历史记录。推送,如果您希望将浏览器历史记录与状态管理同步(例如Redux/Mobx等),通常会使用这种方法。我是否应该使用react router dom中的useHistory?@TahaFarooqui,useHistory可能值得一看。。。以下是作者对此的讨论…>提醒:useHistory钩子是我们正在开发的未来钩子的快速权宜之计:useNavigate。。。{snipped}。。。我们现在提供useHistory,以尽可能轻松地迁移使用history API的现有代码。