首页 > 编程语言 >使用taro和react语言实现:微信小程序,地图中展示气泡,并在气泡中实现倒计时功能

使用taro和react语言实现:微信小程序,地图中展示气泡,并在气泡中实现倒计时功能

时间:2024-10-11 19:17:26浏览次数:9  
标签:const MapPage 微信 taro bubble Taro 气泡

使用 Taro 和 React 来实现微信小程序中的地图气泡倒计时功能,你需要首先确保已经安装了 Taro CLI 并创建了一个 Taro 项目。接下来,我们将逐步实现这个功能。

1. 初始化 Taro 项目

如果你还没有安装 Taro CLI,可以使用 npm 或 yarn 进行安装:

npm install -g @tarojs/cli
# 或者
yarn global add @tarojs/cli

然后,创建一个新的 Taro 项目:

taro init myTaroApp

选择 React 作为框架,并选择 微信小程序 作为目标平台。

2. 项目结构

Taro 项目的结构通常类似于一个标准的 React 项目,但会包含一些 Taro 特有的配置文件。

3. 修改 config/index.js

确保你的项目配置中包含了微信小程序的配置。通常,这个配置已经在初始化的项目中设置好了。

4. 编写页面组件

src/pages 目录下创建一个新的页面,比如 MapPage

src/pages/MapPage/index.jsx
import React, { useState, useEffect, useRef } from 'react';
import Taro, { View, Map } from '@tarojs/components';
import './index.scss';

const MapPage = () => {
  const [bubbles, setBubbles] = useState([]);
  const mapContext = useRef(null);

  useEffect(() => {
    // 添加初始气泡
    addBubble(116.397428, 39.90923, 10);

    // 清理函数,用于清除所有气泡的倒计时
    return () => {
      bubbles.forEach(bubble => clearInterval(bubble.interval));
    };
  }, []);

  const addBubble = (longitude, latitude, countdown) => {
    const width = Taro.getSystemInfoSync().windowWidth;
    const height = Taro.getSystemInfoSync().windowHeight;
    const left = Math.random() * width - 50;
    const top = Math.random() * height - 50;

    const bubble = {
      id: Date.now(),
      longitude,
      latitude,
      left: `${left}px`,
      top: `${top}px`,
      countdown,
      interval: null,
    };

    setBubbles(prevBubbles => [...prevBubbles, bubble]);

    startCountdown(bubble);
  };

  const startCountdown = (bubble) => {
    bubble.interval = setInterval(() => {
      bubble.countdown -= 1;
      setBubbles(prevBubbles =>
        prevBubbles.map(b => (b.id === bubble.id ? bubble : b))
      );

      if (bubble.countdown <= 0) {
        clearInterval(bubble.interval);
        removeBubble(bubble.id);
      }
    }, 1000);
  };

  const removeBubble = (id) => {
    setBubbles(prevBubbles => prevBubbles.filter(bubble => bubble.id !== id));
  };

  const onMapTap = (e) => {
    const { longitude, latitude } = e.detail;
    addBubble(longitude, latitude, 10);
  };

  return (
    <View className='map-container'>
      <Map
        id='map'
        longitude={116.397428}
        latitude={39.90923}
        scale={14}
        markers={[{ id: 1, latitude: 39.90923, longitude: 116.397428 }]}
        onTap={onMapTap}
        style={{ width: '100%', height: '100vh' }}
      />
      {bubbles.map(bubble => (
        <View
          key={bubble.id}
          className='bubble'
          style={{ left: bubble.left, top: bubble.top }}
        >
          <View className='bubble-content'>倒计时: {bubble.countdown}s</View>
        </View>
      ))}
    </View>
  );
};

export default MapPage;
src/pages/MapPage/index.scss
.map-container {
  position: relative;
  width: 100%;
  height: 100vh;
}

.bubble {
  position: absolute;
  width: 100px;
  height: 100px;
  background-color: rgba(255, 0, 0, 0.7);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-size: 16px;
}

.bubble-content {
  text-align: center;
}

5. 配置路由

src/app.config.js 中配置页面路由:

export default {
  pages: [
    'pages/MapPage/index',
    // 其他页面...
  ],
  window: {
    backgroundTextStyle: 'light',
    navigationBarBackgroundColor: '#fff',
    navigationBarTitleText: 'WeChat',
    navigationBarTextStyle: 'black',
  },
};

6. 运行项目

使用 Taro CLI 运行项目:

taro build --type weapp --watch

或者使用 Taro 提供的开发工具(基于微信开发者工具)直接运行和调试:

taro dev:weapp

按照提示打开微信开发者工具,并选择你的项目目录进行预览和调试。

现在,你应该能够在微信小程序中看到一个带有气泡倒计时功能的地图页面。每个气泡在地图上随机生成,并每秒递减倒计时,直到倒计时结束,气泡会从页面上移除。

标签:const,MapPage,微信,taro,bubble,Taro,气泡
From: https://blog.csdn.net/qq_43664361/article/details/142759014

相关文章

  • 微信群运营技巧助你快速增长粉丝(微信群涨粉的方法如下)
    微信群运营技巧助你快速增长粉丝在如今社交媒体的时代,微信群已成为许多品牌和个人沟通的重要工具。有效的微信群运营不仅能促进信息交流,还能帮助你迅速积累粉丝,实现业务或个人目标。本文将分享一些实用的微信群运营技巧,助你在竞争激烈的市场中脱颖而出。明确群体定位首先,......
  • odoo18.0 微信支付
    先决条件我们要使用微信支付首先要开通微信商户平台,还要有一个支付场景(PC网站/APP/小程序/公众号),然后才可以接入到微信支付。安装微信支付模块我们在安装了微信支付模块之后,就可以在支付提供商菜单中看到微信支付的选项,然后我们点击激活,完成微信支付的启用。由于微信支付并没......
  • uniapp、微信小程序、Vue中使用nzh库实现数字转中文大写
    一、nzh库简介nzh库是一款实用的数字转中文大写、中文读数工具,适用于JavaScript和Node.js环境。它可以帮助我们在项目中轻松实现数字与中文大写的相互转换,提高项目的可读性和易用性。二、在uniapp中使用nzh库1、安装nzh库在uniapp项目中,首先需要安装nzh库。打开项目根目录,......
  • 微信小程序登录授权获取基础信息
            最近在写小程序项目时遇到一些问题,小程序登录授权API接口调用会区分新旧版本库,旧版本在调取wx.getUserProfile接口时会直接从底部弹窗,从而允许或取消授权;而新版本库则需要自行设置弹窗,提醒用户授权使用。    测试新版本和旧版本究竟是哪个可以自动底......
  • 微信小程序的北京旅游古建筑文化景点打卡平台Thinkphp/Laravel
    目录技术栈和环境说明项目介绍具体实现截图文件解析微信开发者工具HBuilderX+uniapp开发技术简介性能/安全/负载方面数据访问方式PHP核心代码部分展示代码目录结构解析系统测试详细视频演示源码获取技术栈和环境说明Laravel以其优雅的语法和快速开发能力著称,简化了......
  • 2025选题推荐|基于微信小程序的公考学习平台的设计与实现
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业......
  • 微信转账被骗怎么追回?一招教你处理?
    一旦发现自己被骗,打开百度"搜索官方网站"进行网上报案,[报案官网wwa12450.cn]如实描述当时被骗的过程,进行报案挽回您的损失。 如果微信转账被骗,可以尝试以下方法追回: 1. 及时联系微信客服:向微信客服举报该笔转账交易存在诈骗行为,提供详细的交易信息和被骗情况说明,微......
  • python+django+uniapp高校社团管理系统 微信小程序 a4z3n
    目录项目介绍具体实现截图开发者工具介绍技术路线解决的思路性能/安全/负载方面开发语言以及框架介绍数据库设计python-flask核心代码部分展示python-django核心代码部分展示详细视频演示源码获取项目介绍主要是对于申请入社工作调研,以及对申请入社信息采集、存储、......
  • 微信支付接口接入
    微信支付接口接入微信支付接入文档参考(https://pay.weixin.qq.com/docs/merchant/products/jsapi-payment/preparation.html)1.接入前准备具体步骤如下所示:1、选择接入模式:普通商户或普通服务商,官网说明地址:https://pay.weixin.qq.com/docs/merchant/development/glossary/......
  • 微信公众号小说漫画系统 fileupload.php 任意文件上传复现
    0x01漏洞描述:        在微信公众号小说漫画系统的fileupload.php接口中,存在任意文件上传漏洞,该漏洞允许未经身份验证的攻击者上传恶意文件,从而实现代码执行。这种安全隐患使得攻击者能够在服务器上写入后门程序,获取服务器权限,并最终控制整个Web服务器。攻击者可......