gpt4 book ai didi

reactjs - 以编程方式导航 : React Router V4+ Typescript giving error

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:33 27 4
gpt4 key购买 nike

使用 react router v4 和 Typescript 以编程方式导航时出错:

Property 'history' does not exist on type 'Readonly & Readonly<{ children?: ReactNode; }>

我想在 API 调用成功或失败时重定向到特定路径。但无法做到这一点。

路由器代码

import { BrowserRouter as Router , Switch , Route} from 'react-router-dom';
import * as React from 'react';

class App extends React.Component<{}, {}> {
render()
{
<Router>
<Switch>
<Route exact={true} path='/' component={Login}/>
<Route path='/home' component={Home}/>
<Route path='/test' component={Test}/>
</Switch>
</Router>
}
}
export default App;

组件

import { withRouter } from "react-router-dom";
import * as React from 'react';

class Test extends React.Component<IProps, IState> {

handleSubmit = async() => {
//code for API calls
this.props.history.push("/home") // error at this line
}

render() {
// Form with validations and a submit handler
}
}
export default withRouter(Test);

最佳答案

您需要导入 import { RouteComponentProps } from "react-router-dom";RouteComponentProps 接口(interface)有您正在寻找的 Prop 。

export interface RouteComponentProps<Params extends { [K in keyof Params]?: string } = {}, C extends StaticContext = StaticContext, S = H.LocationState> {
history: H.History;
location: H.Location<S>;
match: match<Params>;
staticContext?: C;
}

你的组件看起来像这样:

import { withRouter } from "react-router-dom";
import * as React from "react";
import { RouteComponentProps } from "react-router-dom";
interface IProps {}

type HomeProps = IProps & RouteComponentProps;

interface IState {}

class Home extends React.Component<HomeProps, IState> {
constructor(props: HomeProps) {
super(props);
}
private handleSubmit = async () => {
//code for API calls
this.props.history.push("/home");
};

public render(): any {
return <div>Hello</div>;
}
}
export const HomeComponent = withRouter(Home);

关于reactjs - 以编程方式导航 : React Router V4+ Typescript giving error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55796569/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com