response-router-dom и Typescript передают реквизиты через history.pu sh () - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь передать props / состояние от одного компонента другому компоненту через реагирующий маршрутизатор history.push() и получаю ошибку машинописного текста, которую я не могу понять. Каждый раз, когда я изменяю тип Component2 на любой, кроме any, я получаю сообщение об ошибке Property 'foo' does not exist on type 'Location<PoorMansUnknown>'.

Этот код работает , то есть мой компонент рендерится, когда я попадаю на маршрут и Я могу получить доступ к пропущенным реквизитам (если игнорирую ошибки типа). Вот что я (упрощенно):

// Component1.tsx
const Component1 = () => {

const prop1 = "foo";
const prop2 = "bar";

return (
   <ClickableCustomComponent
       onClick={() => history.push({
          pathname:'/blah/blah/page-2',
          prop1ToPass: foo,
          prop2ToPass: bar,
        })}
   />
)}
// Component2.tsx
import { withRouter } from 'react-router-dom';

// This page is set up to render when the path is '/blah/blah/page-2'
// I have "any" for the type just because I can't figure out what the type should be

const Component2 = ({ location }: any) => {

  const { prop1ToPass, prop2ToPass } = location;

  return (
    <div>{prop1ToPass}</div>
    <div>{prop2ToPass</div>
  )
}

export default withRouter(Component2);

Какой тип должен использовать Component2?

Я пытался расширить RouteComponentProps следующим образом ( только для получения той же PoorMansUnknown ошибки типа):

interface Props extends RouteComponentProps {
  foo: string;
  bar: string;
}
...