抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

大早上的张同学问我轮播图怎么写?我直接掏出swiper,swiper天下第一!

上年的时候swiper已经出第五代了我当时看不明白,文档也不怎么详细,我用vue他用原生,还直接在页面里创建swiper对象传个swiper-container呢,我整个都在#app里写,对于vue这种组件化框架来说,那种方法简直就是脱裤子放屁,原始到还不如直接新建个html写,当时看着百度上的大佬用vue引入swiper和slide组件,觉得那才是vue的写法,奈何眼拙没找到文档,体验不好,但看演示上的感觉很牛,就搁着了。

这次我终于找到了代码示例,写的非常不错,贴在这里

Swiper Demos (swiperjs.com)

现在正好练练手,拿react试试,很菜,遇到很多bug,记录一下。

代码直接贴这里了

// Import Swiper React components
import {Swiper, SwiperSlide} from 'swiper/react';

// Import Swiper styles
import 'swiper/swiper.scss';
import './css/app.css'

// import Swiper core and required modules
import SwiperCore, {
    Mousewheel
} from 'swiper/core';
import React from "react";

// install Swiper modules
SwiperCore.use([Mousewheel]);


const App = () => {
    return (
        <Swiper
            mousewheel={true}
            direction={'vertical'}
            className={'container'}
            spaceBetween={50}
            slidesPerView={1}

        >
            {
                [1,2,3,4].map(index=>{
                    return (
                        <SwiperSlide style={
                            {
                                backgroundSize: 'cover',
                                backgroundImage:`url(${require(`./static/${index}.jpg`).default})`
                            }
                        }>
                        </SwiperSlide>
                    )
                })
            }
        </Swiper>
    );
};

export default App
  • 刚复制演示代码到编辑器里的时候,整个页面都是瘪的,忘了加css

  • react中的变量问题,我当时写个数组怎么写都不带代码提示,以为webstorm没配置好,原来是得用花括号括起来。。

  • 内联样式属性接收一个对象,所以应该是style = { {css样式} }

  • 图片路径问题,路径必须模块化导入,如果用import导入正常没问题,用require导入的话,require是commenJS的语法,内部默认用的ESmodule的方式,导入不了,网上说可以去webpack.config.js里把ESmodule给false了,但是我react项目把那些配置文件都隐藏了,再显示出来有点费劲,继续翻,找到了个方法,在后面写个.default就好了

  • require中的参数的字符串不能写变量,可以用模板字符串的方法写变量

路径问题我猜把图片写在public里直接在react里写字面量应该也可以,毕竟public不会被webpack解析。(纯猜想,没试过)

路径问题解决方案:

React 日常遇到的坑 - MJ_MY - 博客园 (cnblogs.com)

还有,我当时照首页的写法:

export default () => {
  return (
    ...
  );
};

这里导出的匿名函数是不对的,正常应该给他写个名字再导出。

当时报错的解决方案:

Assign array to a variable before exporting as module default_胖星星的博客-CSDN博客

大概搜了一下原因:

【Javascript核心原理】04. export default function() {}:你无法导出一个匿名函数 - 哔哩哔哩专栏 (bilibili.com)

我的理解:匿名函数会自动把左边的东西当成是它的名字,然后把default当成匿名函数的名字了,也就没有导出,当声明语句执行了,在index.js引入自然是没找到的,不知道csdn的那位大佬是怎么理解的,我没看明白

总结

暴露出了很多问题,基本功不扎实,好久没写react了,手生了

代码地址:

评论