用一个swiper例子来写一下生命周期

本文详细介绍了如何使用Swiper组件实现响应式轮播图,包括安装、配置及动态加载图片的过程。通过实例演示了如何在React项目中引入Swiper,设置其样式,以及如何通过fetch请求获取数据并动态渲染轮播图。

思维:

  1. 引入swiper
    $ yarn add swiper
  2. 在对应的组件中引入
  3. 引入css样式
  4. 引入html结构
  5. 实例化
import React, { Component,Fragment } from 'react';
import Swiper from 'swiper'
import 'swiper/dist/css/swiper.css'
import './index.css'
const SwiperItem = ( props ) => {
return (
    <div className = "swiper-slide">
    <img src = { props.item.img }/>
</div>
)
}
class SwiperComponent extends Component {
constructor () {
    super()
    this.state = {
    banners: []
  }
}
render () {
return (
<Fragment>
            <div className = "swiper-container">
            <div className = "swiper-wrapper">
  {
            this.state.banners.map( ( item,index ) => {
            return <SwiperItem item = {item} key = { item.id }></SwiperItem>
  })
}
    </div>
            <div className = "swiper-pagination"></div>
            <div className = "swiper-button-prev"></div>
            <div className = "swiper-button-next"></div>
            <div className = "swiper-scrollbar"></div>
   </div>
</Fragment>
)
}
componentDidMount () {
    fetch('/data.json')
    .then ( res => res.json() )
    .then ( data => {
    this.setState({
    banners: data
})
setTimeout ( () => {
        this.swiper = new Swiper ('.swiper-container', {
        loop: true, // 循环模式选项
        // 如果需要分页器
        pagination: {
        el: '.swiper-pagination',
        },
        // 如果需要前进后退按钮
        navigation: {
        nextEl: '.swiper-button-next',
        prevEl: '.swiper-button-prev',
        },
        // 如果需要滚动条
        scrollbar: {
        el: '.swiper-scrollbar',
     },
  })
},0)
})
.catch ( error => {
   if (error) throw error
})
}
shouldComponentUpdate () {
if ( this.swiper ) {
     return false
     }else {
     return true
  }
}
componentDidUpdate () {
// 第一中方案 只要有数据变化, 那么这个钩子函数就要执行, 那么this.swiper就会重复实例化
/*
this.swiper = new Swiper ('.swiper-container', {
loop: true, // 循环模式选项
// 如果需要分页器
pagination: {
el: '.swiper-pagination',
},
// 如果需要前进后退按钮
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
// 如果需要滚动条
scrollbar: {
el: '.swiper-scrollbar',
},
})
*/
}
}
export default SwiperComponent

### 如何在 UniApp 中集成和使用原生 SwiperJS 实现滑动效果 要在 UniApp 项目中集成并使用原生 SwiperJS 来实现滑动效果,可以按照以下方法操作: #### 安装依赖 首先,在项目的根目录下安装 Swiper 的 npm 包。可以通过命令行运行以下代码来完成安装: ```bash npm install swiper --save ``` 此过程会将 Swiper 添加到 `node_modules` 文件夹中,并将其作为项目的依赖项记录下来。 #### 配置 Webpack 或 Vite 构建工具 由于 UniApp 使用的是 Vue.js 框架,因此需要确保构建工具能够正确解析 Swiper 的样式文件以及 JavaScript 功能模块。如果使用的是 Webpack,则可以在 `vue.config.js` 文件中配置路径别名[^1];如果是基于 Vite 的新版本,则需调整其插件设置以支持 CSS 和 JS 的加载。 #### 导入 Swiper 样式表与脚本 接着,在 main.js 或 app.vue 文件里全局引入所需的资源文件。例如: ```javascript import 'swiper/swiper-bundle.css'; // 加载默认主题样式 import { Swiper, Navigation } from 'swiper'; // 初始化组件功能扩展 Swiper.use([Navigation]); ``` 上述代码片段展示了如何通过 ES6 Modules 方式导入必要的 CSS 资源及初始化特定的功能模块(如导航按钮)。注意这里调用了 `.use()` 方法启用附加特性[^2]。 #### 创建自定义组件封装 Swiper 为了提高代码复用率,建议创建一个新的 Vue 组件专门用于管理 Swiper 插件实例化逻辑。下面是一个简单的例子说明如何做到这一点: ```html <template> <div class="swiper-container"> <div class="swiper-wrapper"> <!-- Slide Items --> <div v-for="(item,index) in items" :key="index" class="swiper-slide">{{ item }}</div> </div> <!-- Optional Controls --> <div class="swiper-button-prev"></div> <div class="swiper-button-next"></div> </div> </template> <script> export default { data(){ return{ items:['Slide One','Slide Two','Slide Three'] } }, mounted() { new this.$swiper('.swiper-container', { loop:true, navigation:{ nextEl:'.swiper-button-next', prevEl:'.swiper-button-prev' } }); } } </script> <style scoped lang="scss"> .swiper-container{...} /* 自定义样式 */ </style> ``` 在这个模板中我们利用了循环渲染列表项,并且设置了前后翻页控件。同时还在生命周期钩子函数 `mounted` 内部实例化了一个新的 Swiper 对象[^3]。 #### 注意事项 - 确认所使用的 Swiper 版本兼容当前环境。 - 如果遇到性能瓶颈或者内存泄漏等问题,请考虑按需加载策略减少不必要的开销。 - 不同平台可能对某些 HTML/CSS 属性的支持程度有所差异,务必测试跨端表现一致性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值