Я получаю сообщение об ошибке, когда я передаю реквизиты реакции-маршрутизатора, отправленные компоненту в маршруте, потому что у меня есть указанное c состояние, что я передаю этот компонент, но ошибка отображается в моем маршруте.
Вот код маршрута:
<Route
exact
path='/flipltimeline'
render={props => <FliplTimeline {...props} />
В другом компоненте я называю это ниже
props.history.push(`/flipltimeline`, {
Approval: singleFliplApprovals,
InvestigationID,
Unit: unit,
Cost: cost
});
Вот код для компонента. Я наконец получил Typescript для компиляции, но мне пришлось объединить LocationState & TimelineState, чтобы заставить это работать. Но теперь Typescript выдает приведенный выше скриншот, когда я отправляю реквизиты в свой компонент FliplTimeline. Кто-нибудь есть и идея, как это исправить?
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;
FliplTimeline.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>
)