【发布时间】:2021-08-09 04:28:43
【问题描述】:
为什么history.push("/dashboard")将url改成/dashboard后Dashboard组件没有渲染?
Gif showcasing the issue,如你所见,我必须手动点击刷新按钮才能触发重新渲染。
index.js
import ReactDOM from "react-dom";
import Router from "./Router";
const rootElement = document.getElementById("root");
ReactDOM.render(
<Router />,
rootElement
);
LoginForm.js
import React, {Component} from "react"
class LoginForm extends Component {
handleSubmit = (event) => {
event.preventDefault()
this.props.history.push("/dashboard")
}
render() {
return (
<form name="signup_form" onSubmit={this.handleSubmit}>
<input type="submit" value="Sign Up"/>
</form>
)
}
}
export default LoginForm
Router.js
import LoginForm from "./LoginForm";
import {BrowserRouter, Route, Switch } from "react-router-dom";
import React, {Component} from "react";
import { createBrowserHistory } from "history"
const browserHistory = createBrowserHistory()
class Router extends Component {
render() {
return (
<BrowserRouter >
<LoginForm history={browserHistory} />
<Switch>
<Route path="/dashboard" component={Dashboard}/>
</Switch>
</BrowserRouter>
)
}
}
export default Router
function Dashboard() {
return <h1>Dashboard</h1>
}
【问题讨论】:
-
请将
App组件添加到您的代码框 -
我收到一个错误,因为没有 App.js 文件
-
edit : 现在没有错误了,但是你必须添加你的代码
标签: reactjs react-router react-router-dom history