javascript - Glide.js 存在 React 问题

标签 javascript reactjs glidejs

第一次在这里提问。我使用 Glide.js 和 React 来制作轮播。当我点击箭头按钮时,它没有任何反应。

任何建议都会有很大帮助。谢谢!我的代码如下:

import Glide from '@glidejs/glide';

const sliderConfiguration = {
    type: "carousel",
    startAt: 0,
    animationTimingFunc: "ease-in-out",
    gap: 100,
    perView: 3
};

export default function Content() {
    const slider = new Glide(".glide", sliderConfiguration);

    useEffect(() => {
        return () => slider.mount()
    }, [slider])

    return (
        <div className="content">
           
            <div className="glide">
                <div className="glide__cover"></div>

                <div className="glide__track" data-glide-el="track">
                    <ul className="glide__slides">
                        <li className="glide__slide">
                            <div className="slide one">
                                <p>1</p>
                                <div className="rating">
                                    <div className="circle active"></div>
                                    <div className="circle active"></div>
                                    <div className="circle active"></div>
                                    <div className="circle active"></div>
                                    <div className="circle"></div>
                                </div>
                                <div className="slider-image">
                                    <img src={something} alt="something" />
                                    <div className="bookmark">
                                        <FaBookmark />
                                    </div>
                                </div>
                            </div>
                        </li>

                        <li className="glide__slide">
                            <div className="slide two">
                                <p>2</p>
                                <div className="rating">
                                    <div className="circle active"></div>
                                    <div className="circle active"></div>
                                    <div className="circle active"></div>
                                    <div className="circle active"></div>
                                    <div className="circle"></div>
                                </div>
                                <div className="slider-image">
                                    <img src={something} alt="something" />
                                    <div className="bookmark">
                                        <FaBookmark />
                                    </div>
                                </div>
                            </div>
                        </li>

                        <li className="glide__slide">
                            <div className="slide three">
                                <p>3</p>
                                <div className="slider-image">
                                    <img src={something} alt="something" />                                    
                                    <div className="bookmark">
                                        <FaBookmark />
                                    </div>
                                </div>
                            </div>
                        </li>

                        <li className="glide__slide">
                            <div className="slide four">
                                <p>4</p>
                                <div className="slider-image">
                                    <img src={something} alt="something" />
                                    <div className="bookmark">
                                        <FaBookmark />
                                    </div>
                                </div>
                            </div>
                        </li>

                    </ul>
                </div>

                <div data-glide-el="controls" className="controls">
                    <div data-glide-dir="<" id="prev">
                        <FaArrowLeft className="controls-arrow" />
                    </div>
                    <div data-glide-dir=">" id="next">
                        <FaArrowRight className="controls-arrow" />
                    </div>
                </div>
            </div>
        </div>
    )
}

最佳答案

我认为上面代码的问题是当你的 DOM 没有准备好时你错误地初始化了你的 slider 。因此,尝试使用 useRef 引用您的 DOM,如下所示:

import Glide from "@glidejs/glide";

const sliderConfiguration = {
  type: "carousel",
  startAt: 0,
  animationTimingFunc: "ease-in-out",
  gap: 100,
  perView: 3
};

function Content() {
  const ref = React.useRef();

  React.useEffect(() => {
    const slider = new Glide(ref.current, sliderConfiguration);
    slider.mount();
  }, [ref]);

  return (
    <div className="content">
      // specify your `ref` here
      <div ref={ref} className="glide">
        // Your content
      </div>
    </div>
  );
}

关于javascript - Glide.js 存在 React 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63464554/

相关文章:

reactjs - 有没有办法更改组件中的版式默认值?

javascript - 如何使下拉菜单与触发按钮具有相同的宽度

javascript - 如何使用 JavaScript 验证日期和时间

javascript - 新文件阅读器(); react 。遍历项目时

javascript - 如何在 Glide.js 中将 slideWidth 添加到断点

javascript - 是否可以在 vue 组件中使用 glidejs?

r - Shinyglide 条件按钮在第一个屏幕上不起作用

javascript - 当我在 react 功能组件中传递数组时,它变成了一个对象

javascript - 确保 this 引用了该对象

reactjs - 在 package.json 中使用 "homepage",而不弄乱 localhost 的路径