基于Ant Design Mobile封装地址编辑,选择

Ant Design Mobile地址编辑

基于antd-mobile PickerView组件和vant/area-data地址信息封装收货地址信息
(主要是因为Ant Design Mobile没有可以直接拿来用的选择地址组件)
areaList地址信息

import { areaList } from '@vant/area-data' 
import { PickerView } from 'antd-mobile'
import React, { useState, useEffect } from 'react'
export default function Address() {
  const { province_list, city_list, county_list } = areaList
  const [provinceList, setProvinceList] = useState([]) //省份
  const [cityList, setCityList] = useState([]) // 市区
  const [countyList, setCountyList] = useState([]) // 县区
  const [value, setValue] = useState(['000000', '', ''])
  // 把areaList里对象处理成需要的数组
  const editColumns = (list) => {
    let mainList = Object.entries(list).map((item) => {
      return {
        label: item[1],
        value: item[0]
      }
    })
    mainList.unshift({
      label: '请选择',
      value: '000000'
    })
    return mainList
  }
  useEffect(() => {
    // 初始化省份信息
    let provinceList = editColumns(province_list)
    setProvinceList(provinceList)
  }, [])
  useEffect(() => {
    // 通过省份变化,设置市区
    if (value[0] && value[0] !== '000000') {
      // 使用正则过滤市区
      let pattern = new RegExp(`^${value[0].slice(0, 2)}`)
      let cityList = JSON.parse(JSON.stringify(city_list))
      for (let key in cityList) {
        if (!pattern.test(key)) {
          delete cityList[key]
        }
      }
      cityList = editColumns(cityList)
      setCityList(cityList)
    } else {
      setCityList([])
      setCountyList([])
    }
    // 通过市区变化,设置县区
    if (value[1] && value[1] !== '000000') {
      // 使用正则过滤县区
      let pattern = new RegExp(`^${value[1].slice(0, 4)}`)
      let countyList = JSON.parse(JSON.stringify(county_list))
      for (let key in countyList) {
        if (!pattern.test(key)) {
          delete countyList[key]
        }
      }
      countyList = editColumns(countyList)
      setCountyList(countyList)
    } else {
      setCountyList([])
    }
  }, [value])
  return (
    <PickerView
      columns={[provinceList, cityList, countyList]}
      value={value}
      onChange={(val, extend) => {
        setValue(val)
        console.log('onChange', val, extend.items)
      }}
    />
  )
}
效果图

效果图

上述代码只是基础功能,想要应用到项目中就需要在修改一下,地址信息都在extend.items里面



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮您解答这个问题。基于Ant Design React,您可以使用Table组件来实现一个可动态添加和编辑表格内容的表格。 首先,您需要在代码中引入Table组件: ``` import { Table } from 'antd'; ``` 然后,您需要定义表格的列和数据源。您可以将这些数据定义为组件的state,以便在添加和编辑表格内容时进行更新。例如: ``` state = { columns: [ { title: '姓名', dataIndex: 'name', key: 'name', }, { title: '年龄', dataIndex: 'age', key: 'age', }, { title: '地址', dataIndex: 'address', key: 'address', }, ], data: [ { key: '1', name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park', }, { key: '2', name: 'Jim Green', age: 42, address: 'London No. 1 Lake Park', }, ], }; ``` 接下来,您需要在render方法中使用Table组件来渲染表格,并将列和数据源传递给它。例如: ``` <Table columns={this.state.columns} dataSource={this.state.data} /> ``` 现在,您可以使用Ant Design的Form组件来实现添加和编辑表格内容的功能。您可以为表格添加一个“添加”按钮,单击该按钮可以弹出一个包含表单的模态框。用户可以在表单中输入新的行数据,然后单击“确定”按钮将新的行添加到表格中。 您还可以为表格的每一行添加一个“编辑”按钮。单击该按钮可以弹出一个包含表单的模态框,并自动填充该行的数据。用户可以在表单中编辑行数据,然后单击“确定”按钮将更新后的行数据保存到表格中。 最后,为了实现可动态添加表格内容的功能,您需要在“添加”按钮单击事件中更新数据源state。例如: ``` handleAdd = () => { const { data } = this.state; const newData = { key: data.length + 1, name: `Edward King ${data.length + 1}`, age: 32, address: `London, Park Lane no. ${data.length + 1}`, }; this.setState({ data: [...data, newData], }); }; ``` 这样,您就可以实现一个基于Ant Design React的可动态添加和编辑表格内容的表格了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值