反应路由器:'history' 类型缺失
react-router: 'history' is missing in type
App.tsx的一些代码:
interface AppProps{
history: any
}
export default class App extends React.Component<AppProps,...> {
public state = {
target: this.props.history.push('/')
};
private route() {
if (!session.isLogin) {
this.setState({ target: this.props.history.push('/') });
return
} else {
this.setState({ target: this.props.history.push('/root') })
}
}
...
public render() {
return this.state.target
}
}
index.tsx
的部分代码
ReactDOM.render(
<MemoryRouter>
<LocaleProvider locale={zhCn}>
<App history={ ???? }/>
</LocaleProvider>
</MemoryRouter>,
document.getElementById('root') as HTMLElement
);
registerServiceWorker();
为什么"history"的类型不对?提示:属性 'history' 类型'{}'中缺少。 index.tsx应该传什么参数?
谢谢!
如果您希望App
从MemoryRouter
接收所有RouteComponentProps
(包括历史对象),那么您需要通过路由调用App
,像这样:
ReactDOM.render(
<MemoryRouter>
<LocaleProvider locale={zhCn}>
<Route component={App}/>
</LocaleProvider>
</MemoryRouter>,
document.getElementById('root') as HTMLElement
);
然后你可以在App
的声明中用RouteComponentProps<{}>
替换AppProps
。
App.tsx的一些代码:
interface AppProps{
history: any
}
export default class App extends React.Component<AppProps,...> {
public state = {
target: this.props.history.push('/')
};
private route() {
if (!session.isLogin) {
this.setState({ target: this.props.history.push('/') });
return
} else {
this.setState({ target: this.props.history.push('/root') })
}
}
...
public render() {
return this.state.target
}
}
index.tsx
的部分代码ReactDOM.render(
<MemoryRouter>
<LocaleProvider locale={zhCn}>
<App history={ ???? }/>
</LocaleProvider>
</MemoryRouter>,
document.getElementById('root') as HTMLElement
);
registerServiceWorker();
为什么"history"的类型不对?提示:属性 'history' 类型'{}'中缺少。 index.tsx应该传什么参数?
谢谢!
如果您希望App
从MemoryRouter
接收所有RouteComponentProps
(包括历史对象),那么您需要通过路由调用App
,像这样:
ReactDOM.render(
<MemoryRouter>
<LocaleProvider locale={zhCn}>
<Route component={App}/>
</LocaleProvider>
</MemoryRouter>,
document.getElementById('root') as HTMLElement
);
然后你可以在App
的声明中用RouteComponentProps<{}>
替换AppProps
。