#javascript #reactjs #typescript #react-router
#javascript #reactjs #typescript #react-router
Вопрос:
Я пытался использовать suspense и react router, но я не могу понять, что он должен возвращать, и я не хочу отключать это правило. Полное сообщение об ошибке:
Type '{ history: History<any>; location: Location<any>; match:
match<any>; staticContext?: StaticContext | undefined; }' has no
properties in common with type 'IntrinsicAttributes amp; { children?:
ReactNode; }'
import React, { FunctionComponent, lazy, Suspense } from 'react';
import { BrowserRouter, Route, Link, Switch } from 'react-router-dom';
import Loader from '../../Loader';
import Navbar from '../Navbar/Navbar';
const SignUpForm = lazy(() => import('../SignUpForm/SignUpForm'));
const Router: FunctionComponent = (): JSX.Element => {
return (
<BrowserRouter>
<>
<Navbar />
<div className="main-container">
<Switch>
<Route
path="/sign-up"
render={props => (
<Suspense fallback={<Loader />}>
<SignUpForm {...props} />
</Suspense>
)}
/>
</Switch>
</div>
</>
</BrowserRouter>
);
};
export default Router;
Ответ №1:
Я исправил проблему, передав RouteComponentProps в качестве типа реквизита в моем SignUpFormComponent.
import React, { FunctionComponent, useState, SyntheticEvent } from 'react';
import { RouteComponentProps } from 'react-router-dom';
const SignUpForm: FunctionComponent<RouteComponentProps> = (): JSX.Element => {
const submitHandler = async (e: SyntheticEvent): Promise<void> => {
e.preventDefault();
};
return (
<form onSubmit={submitHandler}>
</form>
);
};
export default SignUpForm;