react-slick icon indicating copy to clipboard operation
react-slick copied to clipboard

Element type is invalid: expected a string (for built-in components) or a class/function...

Open PremaYT opened this issue 1 year ago • 7 comments

I am using react-slick as a dependency in one of my custom react package. Slider works fine in the component whereas it throws below error when we publish the component as a package and use it in another component.

Error :

Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. Check the render method 'SimpleSlider'.

import Slider from "react-slick";

const SimpleSlider = () => {
    const settings = {
      dots: true,
      infinite: true,
      speed: 500,
      slidesToShow: 1,
      slidesToScroll: 1
    }
    return (
      <div>
        <Slider {...settings}>
          <div>
            <h3>1</h3>
          </div>
          <div>
            <h3>2</h3>
          </div>
          <div>
            <h3>3</h3>
          </div>
          <div>
            <h3>4</h3>
          </div>
          <div>
            <h3>5</h3>
          </div>
          <div>
            <h3>6</h3>
          </div>
        </Slider>
      </div>
    );
}

export default SimpleSlider;

PremaYT avatar Dec 23 '22 12:12 PremaYT

I can reproduce this exact issue. the people there too => https://github.com/akiran/react-slick/issues/2118

fredericrous avatar Jul 14 '23 21:07 fredericrous

Could avoid this error by using the component like this:

import Slider from "react-slick";

<Slider.default> </Slider.default>

jordisantamaria avatar Aug 19 '23 21:08 jordisantamaria

Just had the same problem. Using vite react-ts. Running in dev mode and building was fine, but when i tried to run ssr i was getting that error.

The imported object was { default: Slider } instead of just Slider even if i tried to import like this import { default as Slider } from 'react-slick'.

Fixed with this:

// @ts-ignore
const SliderComponent = typeof window === 'undefined' ? Slider.default : Slider;

Maybe this is just an issue of my implementation of ssr.

bluesbroz avatar Aug 22 '23 11:08 bluesbroz

Still an issue - tried the .default method, but it messes up the styling.

MoSattler avatar Sep 12 '23 17:09 MoSattler

// @ts-ignore
const SliderComponent = typeof window === 'undefined' ? Slider.default : Slider;

Thanks, it did a trick.

naghtigal avatar Dec 09 '23 15:12 naghtigal

In our case this solution https://github.com/akiran/react-slick/issues/2206#issuecomment-1687985685 did not work. We solved it this way:

import Slider from 'react-slick'

// @ts-ignore
const SliderComponent = !!Slider.default ? Slider.default : Slider

<SliderComponent {...settings}>
...
</SliderComponent>

paolozanotti-f2 avatar Feb 23 '24 11:02 paolozanotti-f2

Still an issue, at least for us on the version 0.29.0

The fix from @paolozanotti-f2 https://github.com/akiran/react-slick/issues/2206#issuecomment-1961173249 worked though, so thank you.

Alevale avatar Mar 18 '24 12:03 Alevale