Home > Software engineering >  JSX element type 'x' does not have any construct or call signatures
JSX element type 'x' does not have any construct or call signatures

Time:11-15

I have an imported image and I want to use it in a function. the image:

import  Edit  from  'src/assets/setting/advertising/edit.png';

and this is the function:

function getOptions(row) {
        return (
            <div>
                <Edit /> //error
                <img src={Edit} /> //error
            </div>
        );
    }

<Edit /> got this error:

JSX element type 'Edit' does not have any construct or call signatures.

and <img src={Edit} /> got this error:

Type 'StaticImageData' is not assignable to type 'string'.ts(2322)

what can I do? thank you.

CodePudding user response:

The two issues are inextricably linked, but they have to be solved differently.

First issue: You are trying to render an imported static file as a HTML element. You can only render React Components or HTML Elements in React, using that syntax.

Example:

function MyCustomElement() {
    return (
        <div>This is custom element<div>
    );
}

export default function Page() {
    return <div>
        <MyCustomElement />
    </div>;
}

Second Issue: You're trying to pass in an imported static file as the src of an image. You would need to pass in a string.

Example:

const PATH_TO_IMAGE = 'src/assets/setting/advertising/edit.png';

function getOptions(row) {
    return (
        <div>
            <img src={PATH_TO_IMAGE} />
        </div>
    );
}

Please, note that the value of "src" must be publicly accessible.

  • Related