【发布时间】:2020-06-06 04:12:38
【问题描述】:
当我将 react-router props 发送到 Route 中的组件传递时出现错误,因为我具有传递此组件的特定状态,但错误显示在我的 Route 中。
这是路线代码:
<Route
exact
path='/flipltimeline'
render={props => <FliplTimeline {...props} />
在另一个组件中我称之为下面
props.history.push(`/flipltimeline`, {
Approval: singleFliplApprovals,
InvestigationID,
Unit: unit,
Cost: cost
});
这是组件的代码。我终于得到了 Typescript 来编译它,但我必须合并 LocationState 和 TimelineState 才能让它工作。但是现在,当我将道具发送到我的 FliplTimeline 组件时,Typescript 会抛出上面的屏幕截图。任何人都知道如何解决这个问题?
history.tsx
import { createBrowserHistory } from 'history';
let baseNameProd = '';
if (process.env.NODE_ENV !== 'production') {
console.log('Looks like we are in development mode!');
baseNameProd = '';
} else {
baseNameProd = '/flipl';
}
const customHistory = createBrowserHistory({
basename: baseNameProd
});
export default customHistory;
翻转时间线.tsx
import * as React from 'react';
import { History, LocationState } from 'history';
interface FliplTimelineLocationState {
Approval: any;
InvestigationID: number;
Unit: string;
Cost: number;
}
interface TimelineState{
state: FliplTimelineLocationState;
}
interface Props {
history: History;
location: LocationState & TimelineState;
}
function FliplTimeline(props: Props) {
return (
<ModuleTemplate title='Status Timeline' subtitle=''>
<FliplTimelineJumbotron className='bg-primary-darker shadow-4 line-height-serif-4'>
<div className='grid-row'>
<div className='grid-col-4'>
<span
className='font-mono-2xl text-white'
style={{
verticalAlign: 'middle'
}}
>
FLIPL{' '}
</span>
<span
className='font-mono-xl text-gold'
style={{
verticalAlign: 'middle'
}}
>
{props.location.state.InvestigationID}
</span>
更新:添加了我的 history.tsx 文件,我在其中为 React-Router 创建了自己的历史记录。也在导入语句中添加。
更新:尝试将我的 FliplTimeline 组件更改为具有此界面
import { RouteComponentProps } from 'react-router-dom'
function FliplTimeline(props: RouteComponentProps ) {
我收到 2 个错误。第一个是这个,另一个说道具的形状不对。想法?
更新:我终于能够为我的组件获得正确的道具声明。
import { RouteComponentProps } from 'react-router-dom';
interface FliplTimelineLocationState {
Approval: any;
InvestigationID: number;
Unit: string;
Cost: number;
}
function FliplTimeline(
props: RouteComponentProps<{}, any, FliplTimelineLocationState | any>
)
【问题讨论】:
标签: reactjs typescript react-router