Réagir 18 enfants TypeScript FC

J'ai mis à jour vers React 18 et tout s'est bien compilé. Aujourd'hui, il semble que chaque composant qui utilise des enfants génère une erreur.Property 'children' does not exist on type 'IPageProps'.

Avant les enfants, les accessoires étaient automatiquement inclus dans l' FCinterface. Maintenant, il semble que je doive ajouter manuellement children: ReactNode. Quel est le type de dactylographie correct pour les enfants réactifs ?

Cela fait-il partie de la mise à jour React 18, ou y a-t-il quelque chose qui cloche dans mon env?

package.json

"react": "^18.0.0",
"react-dom": "^18.0.0",
"next": "12.1.4",
"@types/react": "18.0.0",
"@types/react-dom": "18.0.0",

tsconfig.json

{
"compilerOptions": {
"target": "esnext",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve",
"alwaysStrict": true,
"sourceMap": true,
"incremental": true
},
"include": ["src"],
"exclude": ["node_modules"]
}


Solution du problème

Bien que cette réponse soit correcte, je tiens à noter que vous n'êtes absolument pas obligé d' utiliser cet PropsWithChildrenassistant. (Il est principalement utile pour le codemod, pas pour une utilisation manuelle.)

Au lieu de cela, je trouve plus facile de les définir manuellement.

Avant que

import * as React from 'react';
type Props = {};
const Component: React.FC<Props> = ({children}) => {...}

Après

import * as React from 'react';
type Props = {
children?: React.ReactNode
};
const Component: React.FC<Props> = ({children}) => {...}

C'est tout ce qu'il faut.

Dans React, childrenc'est un accessoire régulier et ce n'est pas quelque chose de spécial. Vous devez donc le définir comme vous définissez tous les autres accessoires. Les frappes précédentes qui le cachaient étaient fausses.

Commentaires

Posts les plus consultés de ce blog

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Détecter les appuis sur les touches fléchées en JavaScript

Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"