Node.js history.push不工作等待或同步,直到单击按钮

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

我尝试使用“history.push()”导航页面而不刷新,它只在被人通过按钮点击时工作。它不会以编程方式工作。它只是在更新url,而不是在浏览器中导航

//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的现有代码。