好客租房130-获取顶部导航信息

简介: 好客租房130-获取顶部导航信息

获取顶部导航城市信息

1打开百度地图api文档

2通过ip定位获取当前城市名称

3调用我们服务器的接口 换取项目中的城市信息

图片.png

import React from 'react'
import axios from 'axios'
//留白
import { Carousel, Flex, Grid, WingBlank } from 'antd-mobile'
import Nav1 from '../../assets/images/nav-1.png'
import Nav2 from '../../assets/images/nav-2.png'
import Nav3 from '../../assets/images/nav-3.png'
import Nav4 from '../../assets/images/nav-4.png'
import Body1 from '../../assets/images/1.png'
import Body2 from '../../assets/images/2.png'
import Body3 from '../../assets/images/3.png'
import Body4 from '../../assets/images/4.png'
//导入样式
import './index.scss'
const navs = [
  {
    id: 1,
    img: Nav1,
    title: '整租',
    path: '/home/list',
  },
  {
    id: 2,
    img: Nav2,
    title: '合租',
    path: '/home/list',
  },
  {
    id: 3,
    img: Nav3,
    title: '地图找房',
    path: '/home/list',
  },
  {
    id: 4,
    img: Nav4,
    title: '去出租',
    path: '/home/list',
  },
]
const data = Array.from(new Array(4)).map((_val, i) => ({
  icon: `Body${i + 1}`,
  text: `name${i}`,
}))
// navigator.geolocation.getCurrentPosition(position=>{
//     console.log("当前信息位置1",position)
// })
// 轮播图不会自动播放  数据返回过来的时候高度不够 数据加载前后数据的问题
class Index extends React.Component {
  state = {
    data: ['1', '2', '3'],
    imgHeight: 212,
    isSwiperLoding: false,
    groups: [],
    swiper: [],
    news: [],
        curCityName:"苏州"
  }
  componentDidMount() {
    // simulate img loading
    this.getGroups()
    this.getSwipers()
    this.getNews()
    setTimeout(() => {
      this.setState({
        data: [
          'AiyWuByWklrrUDlFignR',
          'TekJlZRVCjLFexlOCuWn',
          'IJOtIlfsYdTyaDTRVrLI',
        ],
        isSwiperLoding: true,
      })
    }, 100)
        //通过ip定位获取当前城市名称
        const curCity=new window.BMapGL.LocalCity()
        curCity.get(async res=>{
            console.log("当前城市信息:",res)
           const result=await axios.get(`http://localhost:8080/area/info?name=${res}`)
           console.log(result,"result")
           this.setState({
               curCityName:result.data.body.label
           })
        })
  }
  // 获取最新资讯
  async getNews() {
    const res = await axios.get(
      'http://localhost:8080/home/news?area=AREA%7C88cff55c-aaa4-e2e0'
    )
    console.log('最新资讯数据为:', res)
    this.setState({
      news: res.data.body,
    })
  }
  async getSwipers() {
    const res = await axios.get('http://localhost:8080/home/swiper')
    console.log('轮播如数据为:', res)
    this.setState({
      swiper: res.data.body,
    })
  }
  async getGroups() {
    const res = await axios.get('http://localhost:8080/home/groups', {
      params: {
        area: 'AREA%7C88cff55c-aaa4-e2e0',
      },
    })
    console.log('小组数据为:', res)
    this.setState({
      groups: res.data.body,
    })
  }
  //渲染轮播图的方法
  renderSwipers() {
    return this.state.swiper.map((val) => (
      <a
        key={val.id}
        href="http://www.alipay.com"
        style={{
          display: 'inline-block',
          width: '100%',
          height: this.state.imgHeight,
        }}
      >
        <img
          src={`http://localhost:8080${val.imgSrc}`}
          alt=""
          style={{ width: '100%', verticalAlign: 'top' }}
          onLoad={() => {
            // fire window resize event to change height
            window.dispatchEvent(new Event('resize'))
            this.setState({ imgHeight: 'auto' })
          }}
        />
    ))
  }
  //渲染最新资讯
  renderNews() {
    console.log(this.state.news, 'newsssss')
    return this.state.news.map((item) => (
            className="img"
            src={`http://localhost:8080${item.imgSrc}`}
            alt=""
          />
        </div>
        <Flex className="content" direction="column" justify="between">
          <h3 className="title">{item.title}</h3>
          <Flex className="info" justify="between">
            <pan>{item.from}</pan>
            <pan>{item.date}</pan>
          </Flex>
        </Flex>
      </div>
    ))
  }
  //渲染导航菜单
  renderNavs() {
    return navs.map((item) => (
      <Flex.Item
        key={item.id}
        onClick={() => {
          this.props.history.push(item.path)
        }}
      >
        <img src={item.img} alt="" />
        <h2>{item.title}</h2>
      </Flex.Item>
    ))
  }
  //渲染资讯
  render() {
    return (
      //留白 WingBlank
      <div className="index">
        <div className="swiper">
          {this.state.isSwiperLoding === true ? (
            <Carousel
              //自动播放
              autoplay={true}
              infinite
              //   beforeChange={(from, to) => console.log(`slide from ${from} to ${to}`)}
              //   afterChange={index => console.log('slide to', index)}
            >
              {this.renderSwipers()}
            </Carousel>
          ) : (
            ''
          )}
          {/* 搜索框 */}
          <Flex className="search-box">
            {/* 左侧白色区域 */}
            <Flex className="search">
              {/* 位置 */}
              <div
                className="location"
                onClick={() =>
                  this.props.history.push('/citylist')
                }
              >
                <span className="name">{this.state.curCityName}</span>
                <i className="iconfont icon-arrow" />
              </div>
              {/* 搜索表单 */}
              <div
                className="form"
                onClick={() =>
                  this.props.history.push('/search')
                }
              >
                <i className="iconfont icon-seach" />
                <span className="text">请输入小区或地址</span>
              </div>
            </Flex>
            {/* 右侧地图图标 */}
            <i
              className="iconfont icon-map"
              onClick={() => this.props.history.push('/map')}
            />
          </Flex>
        </div>
        <Flex square={false} className="nav">
          {this.renderNavs()}
        </Flex>
        {/* 租房小组 */}
        <div className="group">
          <h3 className="group-title">
            租房小组:<span className="more">更多</span>
          </h3>
          {/* 宫格组件 */}
          <Grid
            data={this.state.groups}
            columnNum={2}
            square={false}
            hasLine={false}
            renderItem={(item) => (
              <Flex
                className="group-item"
                justify="around"
                key={item.id}
              >
                <div className="desc">
                  <p className="title">{item.title}</p>
                  <span className="info">{item.desc}</span>
                </div>
                <img
                  src={`http://localhost:8080${item.imgSrc}`}
                  alt='好客租房130-获取顶部导航信息_ios_02'
                />
            )}
          />
最新资讯
          {this.renderNews()}
    )
  }
}
export default Index

运行结果

图片.png

相关文章
|
人工智能 安全 大数据
拼多多被坑,羊毛党成互联网新难题
拼多多被坑,羊毛党成互联网新难题
477 0
拼多多被坑,羊毛党成互联网新难题
|
6天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
16天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
10天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
621 216
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
860 61
|
8天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1332 157
|
5天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
248 138
|
7天前
|
存储 安全 固态存储
四款WIN PE工具,都可以实现U盘安装教程
Windows PE是基于NT内核的轻量系统,用于系统安装、分区管理及故障修复。本文推荐多款PE制作工具,支持U盘启动,兼容UEFI/Legacy模式,具备备份还原、驱动识别等功能,操作简便,适合新旧电脑维护使用。
550 109