Я хочу перейти на новую страницу после того, как пользователь вошел в систему. Обычно я использую this.props.history.push("/some_other_page");
Однако, это дает мне следующую ошибку.
Свойство 'history' не существует навведите 'Readonly & Readonly <{children ?: ReactNode;}>
Singin.tsx
interface Props {
classes: any
}
interface State {
email: string;
password: string;
}
class SignIn extends Component<Props, State> {
constructor(props: Props) {
super(props);
this.state = {
email: "",
password: "",
};
}
...
handleLogin = async (event: any) => {
event.preventDefault();
const credentials: ILoginCredentials = {
email: this.state.email,
password: this.state.password
}
const res = await this.context.login(credentials);
if (res.status === 201) {
this.props.history.push("/dashboard");
}
}
...
}
SignIn.contextType = AuthContext;
export default withStyles(styles)(SignIn)
App.tsx
import React, { Component, Fragment } from 'react';
import { BrowserRouter, Route } from 'react-router-dom';
import { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles';
import { AuthProvider, AuthContext } from "./contexts/AuthContext";
import SignIn from "./components/signin/SignIn";
import SignUp from "./components/signup/SignUp";
import Dashboard from "./components/dashboard/Dashboard";
import { createBrowserHistory } from 'history';
import './App.scss';
const theme = createMuiTheme({
palette: {
primary: {
main: '#212121',
contrastText: '#fff',
},
secondary: {
main: "#ffd600",
}
}
})
class App extends Component {
componentDidMount = async () => {
}
createRoutes = () => {
return (
<Fragment>
<Route exact path="/" component={SignIn} />
<Route exact path="/signup" component={SignUp} />
<Route exact path="/dashboard" component={Dashboard} />
</Fragment>
)
}
render() {
const history = createBrowserHistory();
return (
<div className="root">
<AuthProvider>
<MuiThemeProvider theme={theme}>
<BrowserRouter history={history}>
{this.createRoutes()}
</BrowserRouter>
</MuiThemeProvider>
</AuthProvider>
</div>
)
}
}
App.contextType = AuthContext;
export default App;