使用react-router-redux,如何以编程方式重定向到URL

AnA*_*ice 5 reactjs react-router redux react-redux react-router-dom

如何在给定以下包的情况下以编程方式重定向到URL:

"react-dom": "^15.5.4",
"react-redux": "^5.0.4",
"react-router-dom": "^4.1.1",
"react-router-redux": "^5.0.0-alpha.6",
Run Code Online (Sandbox Code Playgroud)

我有这个工作:

import React from 'react';
import createBrowserHistory from 'history/createBrowserHistory';

class WorkPlacePage extends React.Component {
  render() {
    const history = createBrowserHistory();
    return (
      <div>
        <button onClick={() => history.push('/welcome/skills')}>next page</button>
      </div>
    );
  }
}

export default WorkPlacePage;
Run Code Online (Sandbox Code Playgroud)

上面的问题是,当浏览器的URL发生变化时,react应用程序似乎并未将URL更改视为重定向.应该由URL触发的react应用程序组件永远不会像url硬刷新时那样运行react组件逻辑...

如何以编程方式触发React App加载新URL的URL重定向?

谢谢!

Rav*_*ala 3

如果使用较新的 React-router API,则需要在组件内部使用 this.props 的历史记录,如下所示:

this.props.history.push('/some/path');
Run Code Online (Sandbox Code Playgroud)

然而,这可能仅用于以编程方式更改 URL,而不是实际导航到该页面。您的路由器配置文件中应该有一些组件到此 URL 的映射,如下所示。

<BrowserRouter>
      <div>
        <Switch>
            <Route path="/some/path" component={SomeComponent} />
            <Route path="/" component={IndexComponent} />
        </Switch>
      </div>
</BrowserRouter>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。快乐编码!