【发布时间】:2023-04-09 22:21:02
【问题描述】:
index.tsx 的一些代码:
ReactDOM.render(
<MemoryRouter>
<LocaleProvider locale={zhCn}>
<App/>
</LocaleProvider>
</MemoryRouter>,
document.getElementById('root') as HTMLElement
);
App.tsx 的一些代码
interface AppProps{
history?: any
}
....
public route() {
if (!session.isLogin) {
this.props.history.push('/');
} else {
this.props.history.push('/root')
}
}
...
public render() {
return (
<Switch>
<Route exact path='/' component={Login} />
<Route exact path='/root' component={Root} />
</Switch>
)
}
写这个的时候会报错Cannot read property 'push' of undefined,然后我修改了使用"withRouter"来修改。
export default withRouter(App)
还报错: 错误 TS2345:“typeof App”类型的参数不可分配给“ComponentType>”类型的参数。
类型“typeof App”不可分配给类型“StatelessComponent>”。
类型 'typeof App' 不提供签名匹配 '(props: RouteComponentProps & { children?: ReactNode; }, context?: any): ReactElement |空'。
有什么问题?
谢谢
【问题讨论】:
-
你能展示你如何使用
标签: reactjs typescript react-router-dom