赞
踩
最终效果:


搜索页面源码:
重点关注:
onTipsClick = (item) => { this.props.history.replace('/rent/add',{
name: item.communityName,
id: item.community
})
}
import React, { Component } from "react"; import { SearchBar } from "antd-mobile"; import { getCity } from "../../../utils/city"; import API from "../../../utils/api"; import styles from "./index.module.css"; export default class Search extends Component { // 当前城市id cityId = getCity().value; state = { // 搜索框的值 searchTxt: "", tipsList: [], }; timerId = null // 渲染搜索结果列表 renderTips = () => { const { tipsList } = this.state; return tipsList.map((item) => ( <li key={item.community} className={styles.tip} onClick={()=> {this.onTipsClick(item)}}> {item.communityName} </li> )); }; onTipsClick = (item) => { this.props.history.replace('/rent/add',{ name: item.communityName, id: item.community }) } handleSearchTxt = (value) => { this.setState({ searchTxt: value, }); if (!value) { return this.setState({ tipsList: [] }); } else { clearTimeout(this.timerId) this.timerId = setTimeout(async ()=>{ const { data: { body} } = await API.get("/area/community",{ params: { name: value, id: this.cityId }, }); this.setState({ tipsList: body }) },500) } }; render() { const { history } = this.props; const { searchTxt } = this.state; return ( <div className={styles.root}> {/* 搜索框 */} <SearchBar placeholder="请输入小区或地址" value={searchTxt} onChange={this.handleSearchTxt} showCancelButton={true} onCancel={() => history.replace("/rent/add")} /> {/* 搜索提示列表 */} <ul className={styles.tips}>{this.renderTips()}</ul> </div> ); } }
添加页面源码:
重点关注:
const { state } = props.location
const community = {
name: '',
id: ''
}
if (state) {
// 有小区数据,存储到状态中
community.name = state.name;
community.id = state.id;
}
history.replace传过来的值

import React, { Component } from 'react' import { Flex, List, InputItem, Picker, ImagePicker, TextareaItem, Modal } from 'antd-mobile' import NavHeader from '../../../components/NavHeader' import HousePackge from '../../../components/HousePackage' import styles from './index.module.css' const alert = Modal.alert // 房屋类型 const roomTypeData = [ { label: '一室', value: 'ROOM|d4a692e4-a177-37fd' }, { label: '二室', value: 'ROOM|d1a00384-5801-d5cd' }, { label: '三室', value: 'ROOM|20903ae0-c7bc-f2e2' }, { label: '四室', value: 'ROOM|ce2a5daa-811d-2f49' }, { label: '四室+', value: 'ROOM|2731c38c-5b19-ff7f' } ] // 朝向: const orientedData = [ { label: '东', value: 'ORIEN|141b98bf-1ad0-11e3' }, { label: '西', value: 'ORIEN|103fb3aa-e8b4-de0e' }, { label: '南', value: 'ORIEN|61e99445-e95e-7f37' }, { label: '北', value: 'ORIEN|caa6f80b-b764-c2df' }, { label: '东南', value: 'ORIEN|dfb1b36b-e0d1-0977' }, { label: '东北', value: 'ORIEN|67ac2205-7e0f-c057' }, { label: '西南', value: 'ORIEN|2354e89e-3918-9cef' }, { label: '西北', value: 'ORIEN|80795f1a-e32f-feb9' } ] // 楼层 const floorData = [ { label: '高楼层', value: 'FLOOR|1' }, { label: '中楼层', value: 'FLOOR|2' }, { label: '低楼层', value: 'FLOOR|3' } ] export default class RentAdd extends Component { constructor(props) { super(props) // console.log(props); const { state } = props.location const community = { name: '', id: '' } if (state) { // 有小区数据,存储到状态中 community.name = state.name; community.id = state.id; } this.state = { // 临时图片地址 tempSlides: [], // 小区的名称和id community, // 价格 price: '', // 面积 size: 0, // 房屋类型 roomType: '', // 楼层 floor: '', // 朝向: oriented: '', // 房屋标题 title: '', // 房屋图片 houseImg: '', // 房屋配套: supporting: '', // 房屋描述 description: '' } } // 取消编辑,返回上一页 onCancel = () => { alert('提示', '放弃发布房源?', [ { text: '放弃', onPress: async () => this.props.history.go(-1) }, { text: '继续编辑' } ]) } render() { const Item = List.Item const { history } = this.props const { community, price, roomType, floor, oriented, description, tempSlides, title } = this.state return ( <div className={styles.root}> <NavHeader onLeftClick={this.onCancel}>发布房源</NavHeader> <List className={styles.header} renderHeader={() => '房源信息'} data-role="rent-list" > {/* 选择所在小区 */} <Item extra={community.name || '请输入小区名称'} arrow="horizontal" onClick={() => history.replace('/rent/search')} > 小区名称 </Item> <InputItem placeholder="请输入租金/月" extra="¥/月" value={price}> 租 金 </InputItem> <InputItem placeholder="请输入建筑面积" extra="㎡"> 建筑面积 </InputItem> <Picker data={roomTypeData} value={[roomType]} cols={1}> <Item arrow="horizontal"> 户 型 </Item> </Picker> <Picker data={floorData} value={[floor]} cols={1}> <Item arrow="horizontal">所在楼层</Item> </Picker> <Picker data={orientedData} value={[oriented]} cols={1}> <Item arrow="horizontal"> 朝 向 </Item> </Picker> </List> <List className={styles.title} renderHeader={() => '房屋标题'} data-role="rent-list" > <InputItem placeholder="请输入标题(例如:整租 小区名 2室 5000元)" value={title} /> </List> <List className={styles.pics} renderHeader={() => '房屋图像'} data-role="rent-list" > <ImagePicker files={tempSlides} multiple={true} className={styles.imgpicker} /> </List> <List className={styles.supporting} renderHeader={() => '房屋配置'} data-role="rent-list" > <HousePackge select /> </List> <List className={styles.desc} renderHeader={() => '房屋描述'} data-role="rent-list" > <TextareaItem rows={5} placeholder="请输入房屋描述信息" autoHeight value={description} /> </List> <Flex className={styles.bottom}> <Flex.Item className={styles.cancel} onClick={this.onCancel}> 取消 </Flex.Item> <Flex.Item className={styles.confirm} onClick={this.addHouse}> 提交 </Flex.Item> </Flex> </div> ) } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。