J'ai ce fichier .tsx
import React, { Component } from 'react';
export class SidebarItem extends Component {
constructor (props) {
super(props);
}
render () {
return (<li>{this.props.children}</li>);
}
}
Cependant, TypeScript lève cette erreur: error TS2339: Property 'props' does not exist on type 'SidebarItem'.
La solution consiste à installer les définitions de React Types
yarn add -DE @types/react
Plus de détails à partir de TypeScript docs et de types repo
Sur une note de côté, je devais redémarrer vscode pour que la peluche se déclenche correctement.
TypeScript suit la spécification du module ES mais React suit CommonJS. Cet article aborde entre autres choses .
L'importation de React comme ceci résoudra ce problème:
import * as React from 'react';
export class SidebarItem extends React.Component {
constructor (props) {
super(props);
}
render () {
return (<li>{this.props.children}</li>);
}
}
Vous pouvez essayer la manière suivante d’écrire un React Comp.
interface SidebarItemProps
{
children: any
}
class SidebarItem extends React.Component<SidebarItemProps, any> {
//your class methods
}
Si votre composant n'a pas d'état, vous n'avez pas du tout besoin d'utiliser une classe. Vous pouvez également utiliser un composant de réaction sans état (SFC) comme réponse pour cette question .
const MyStatelessComponent : React.StatelessComponent<{}> = props =>
<li>{props.children}</li>;
Ou si votre marge devient énorme:
const MyStatelessComponent : React.StatelessComponent<{}> = props => {
return <li>{props.children}</li>;
}