React TypeScript: правильный тип для useLocation () из response-router-dom - PullRequest
0 голосов
/ 08 мая 2020

Я изо всех сил пытаюсь найти правильный тип для этой ситуации. Это упрощенная версия перенаправления после входа в систему. Следующее приводит к ошибке компилятора:

Property 'from' does not exist on type '{} | { from: { pathname: string; }; }'.

Добавление as any к использованию location.state исправляет ошибку компилятора, но она уродлива, и линтер жалуется.

import React from "react";
import { useLocation } from "react-router-dom";

const AuthLayer: React.FC = (props) => {
  const location = useLocation();

  const { from } = location.state || { from: { pathname: "/" } };

  return <p></p>;
};

export default AuthLayer;

1 Ответ

2 голосов
/ 08 мая 2020

Вы можете создать определенный тип или интерфейс для описания вашего состояния местоположения, а затем использовать его при вызове useLocation хука:

import React from "react";
import { useLocation } from "react-router-dom";

interface LocationState {
  from: {
    pathname: string;
  };
}

const AuthLayer: React.FC = (props) => {
  const location = useLocation<LocationState>();

  const { from } = location.state || { from: { pathname: "/" } };

  return <p></p>;
};

export default AuthLayer;
...