React Router V4にアップグレードしましたが、現在はhistory.Push
方法。
Index.jsファイルがあります。
import React from "react";
import { render } from "react-dom";
import { BrowserRouter, Route } from 'react-router-dom';
import createBrowserHistory from 'history/createBrowserHistory';
const history = createBrowserHistory();
import { Main} from "./components/Main";
import { About } from "./components/About";
import { Cars} from "./components/Cars";
class App extends React.Component {
render() {
return (
<BrowserRouter history={history}>
<div>
<Route path={"/"} component={Main} />
<Route path={"/cars"} component={Cars}/>
<Route path={"/about"} component={About}/>
</div>
</BrowserRouter>
)
}
}
render(<App/>, window.document.getElementById("app"));
次に、別のファイルがあります。このファイルには、次のような特定のページに戻るための簡単なものが追加されています。
import React from "react";
import createBrowserHistory from 'history/createBrowserHistory';
const history = createBrowserHistory();
export class Cars extends React.Component {
navigateBack() {
history.Push('/')
}
render() {
return(
<div>
<h3>Overview of Cars</h3>
<p>Model: </p>
<button onClick={this.navigateBack} className="btn btn-primary">Back</button>
</div>
)
}
}
だから、私はここで何が間違っているのか理解できません。ボタンをクリックすると、URLが/
しかしそれだけです。手伝ってくれる人はいますか?
[〜#〜] edit [〜#〜]
私はこれを行うと動作することを発見しました:
this.props.history.Push('/home')
そして
<button onClick={this.onNavigateHome.bind(this)}
しかし、それはどういうわけか間違っているようですか??
私がする時
this.context.history.Push('/home')
Cannot read property 'context' of null
しかし、なぜ??私の<BrowserRouter>
セットアップが間違っている??
とにかく、助けてくれてありがとう:)
_{withRouter} from 'react-router-dom'
_をインポートし、この方法でクラスをエクスポートする必要があります
export default withRouter(Cars)
V4では、this.context.history.Push('/cart');
を使用する必要があります
詳細については、これらの投稿をご覧ください。
ForceRefresh = {true}をBrowserRouterに追加してみてください。
<BrowserRouter forceRefresh={true}>
これは私のために働いた:
routes.js
import React from 'react';
import { Route, Switch, Redirect } from 'react-router';
import { BrowserRouter } from 'react-router-dom';
const routes = (
<div>
<BrowserRouter>
<Switch>
<Route path="/login" component={Login} />
<Route path="/home" component={Logged} />
</Switch>
</BrowserRouter>
</div>
);
Login.js
componentWillReceiveProps = nextProps => {
const { signedIn, history } = this.props;
if (signedIn !== nextProps.signedIn && nextProps.signedIn) {
history.Push('/home');
}
};
export default withRouter(connect(mapStateToProps)(Login));
そして今、それはレンダリングされます!それが誰かを助けることを願って