当前位置:首页 > uni-app

uniapp 活动组件

2026-03-05 04:50:53uni-app

uniapp 活动组件实现方法

使用内置组件实现基础活动

uniapp提供了丰富的内置组件,可以快速搭建活动页面。swiper组件适合轮播图展示活动海报,scroll-view可实现活动列表滚动展示。结合image组件加载活动图片,button组件设置活动参与按钮。

<template>
  <view>
    <swiper indicator-dots autoplay>
      <swiper-item v-for="(item,index) in banners" :key="index">
        <image :src="item.imgUrl" mode="aspectFill"></image>
      </swiper-item>
    </swiper>
    <scroll-view scroll-y>
      <view v-for="(act,idx) in activities" :key="idx">
        <image :src="act.cover"></image>
        <text>{{act.title}}</text>
        <button @click="joinActivity(act.id)">立即参与</button>
      </view>
    </scroll-view>
  </view>
</template>

自定义活动组件开发

对于复杂活动需求,可创建自定义组件。在components目录新建activity-card组件,封装活动卡片样式和逻辑。通过props接收活动数据,emit事件处理用户交互。

// components/activity-card.vue
<template>
  <view class="activity-card" @click="handleClick">
    <image :src="data.cover" mode="aspectFill"></image>
    <view class="info">
      <text class="title">{{data.title}}</text>
      <text class="time">{{data.time}}</text>
    </view>
  </view>
</template>

<script>
export default {
  props: {
    data: Object
  },
  methods: {
    handleClick() {
      this.$emit('click', this.data.id)
    }
  }
}
</script>

状态管理与数据绑定

使用vuex管理活动状态数据,实现跨页面共享。定义actions异步获取活动列表,mutations更新状态,getters提供计算属性。

// store/modules/activity.js
export default {
  state: {
    list: []
  },
  mutations: {
    SET_ACTIVITIES(state, payload) {
      state.list = payload
    }
  },
  actions: {
    async fetchActivities({commit}) {
      const res = await uni.request({url: '/api/activities'})
      commit('SET_ACTIVITIES', res.data)
    }
  }
}

动画效果增强体验

利用uniapp的动画API或CSS3动画提升交互体验。为活动入口添加缩放效果,列表项增加入场动画,按钮设置点击反馈。

.activity-card {
  transition: all 0.3s;
}
.activity-card:active {
  transform: scale(0.95);
}
@keyframes fadeIn {
  from {opacity: 0; transform: translateY(20px);}
  to {opacity: 1; transform: translateY(0);}
}
.activity-item {
  animation: fadeIn 0.5s forwards;
}

跨平台兼容处理

针对不同平台进行样式适配。使用条件编译处理平台差异,确保H5、小程序、App端显示一致。

// #ifdef H5
.activity-card {
  border-radius: 8px;
}
// #endif
// #ifdef MP-WEIXIN
.activity-card {
  border-radius: 0;
}
// #endif

性能优化建议

活动页面需注意图片懒加载、数据分页加载。大图使用CDN加速,列表数据分页请求,避免一次性加载过多内容。

uniapp 活动组件

onReachBottom() {
  this.page++
  this.loadData()
},
methods: {
  loadData() {
    uni.request({
      url: '/api/activities',
      data: {page: this.page}
    })
  }
}

标签: 组件uniapp
分享给朋友:

相关文章

vue实现组件封装

vue实现组件封装

Vue 组件封装方法 封装组件的基本步骤 创建独立的 .vue 文件,包含 template、script 和 style 三个部分。通过 props 接收父组件传递的数据,使用 $emit 触发自…

vue组件实现

vue组件实现

Vue 组件实现 Vue 组件是 Vue.js 的核心特性之一,允许开发者将 UI 拆分为独立、可复用的模块。以下是实现 Vue 组件的几种常见方式: 单文件组件(SFC) 单文件组件是 Vue 中…

uniapp判断手机定位是否开启

uniapp判断手机定位是否开启

判断手机定位是否开启的方法 在UniApp中判断手机定位是否开启,可以通过调用原生API或使用第三方插件实现。以下是几种常见的方法: 使用uni.getLocation检测定位状态 通过调用uni.…

精通uniapp

精通uniapp

掌握UniApp的基础知识 UniApp是一个基于Vue.js的跨平台开发框架,支持一次开发多端部署(如H5、小程序、App等)。核心概念包括Vue语法、组件化开发、条件编译(针对不同平台适配)以及U…

uniapp get

uniapp get

uniapp 获取数据的方法 在 uniapp 中获取数据可以通过多种方式实现,包括 API 请求、本地存储、页面传参等。以下是一些常见的方法: API 请求获取数据 使用 uni.request…

uniapp $on

uniapp $on

uniapp $on 方法详解 $on 是 UniApp 中用于监听全局事件的 API,常用于跨页面或跨组件通信。它基于 Vue 的事件机制,允许在全局范围内触发和监听自定义事件。 基本语法…