Класс элементов JSX не поддерживает атрибуты, поскольку у него нет свойства ‘props’. ts(2607)

#javascript #html #reactjs #jsx #tsx

Вопрос:

Я получаю эту ошибку при использовании «Обрезки» из библиотеки react-easy-crop, я попробовал несколько вещей, которые нашел на форумах, таких как добавление @типов/react, импорт * как реакция из «react», но, похоже, ничего не работает.

Вот код, который доставляет мне неприятности:

 import * as React from "react";
import Cropper from "react-easy-crop";

export default function CropperPage({action , valuePro}: any) {
   return (
     <Cropper //  <-- This is giving me the error
        cropShape= "round"
        disableAutomaticStylesInjection="true"
        image={image}
        crop={crop}
        zoom={zoom}
        aspect={1}
        onCropChange={setCrop}
        onZoomChange={setZoom}
        onCropComplete={onCropComplete}
    />
   );
}
 

Все сообщение об ошибке выглядит так:

Класс элементов Blockquote JSX не поддерживает атрибуты, поскольку у него нет свойства «реквизит». ts(2607) «Обрезка» не может использоваться в качестве компонента JSX. Его экземпляр типа «Обрезка» не является допустимым элементом JSX. В типе «Обрезка» отсутствуют следующие свойства типа «Класс элементов»: контекст, setState, forceUpdate, реквизиты, ссылки(2786) (псевдоним) класс обрезки импорт обрезки

Ответ №1:

 import Cropper from "react-easy-crop";

interface CropperFix extends React.Component {}

const Cropped = (Cropper as any) as {
    new(): CropperFix;
};

const props: any = {
    cropShape: "round",
    disableAutomaticStylesInjection: true,
    image,
    crop,
    zoom,
    aspect: 1,
    onCropChange: setCrop,
    onZoomChange: setZoom,
    onCropComplete: onCropComplete,
}

...

<Cropped ...props/>

 

Возможно, некрасиво, но работает

Комментарии:

1. есть какие-нибудь разъяснения? что он делает и как устранить аналогичную проблему?