UNPKG

react-address-picker-cc

Version:

仿京东移动端地址选择组件 mobile/pc address picker component

196 lines (163 loc) 4.69 kB
# react-address-picker-cc [![NPM](https://img.shields.io/npm/v/react-address-picker-cc.svg)](https://www.npmjs.com/package/react-address-picker-cc) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) * 仿京东移动端地址选择组件 * 适配触屏和PC * 有异步获取收货地址的方法 ![](https://n1image.hjfile.cn/res7/2019/03/24/10ba8f07bc315b3a2bd735adf9b7a954.gif) ## Install ```bash npm install --save react-address-picker-cc ``` ## Example ``` cd examples npm start ``` ## Usage ```jsx import React, { Component } from 'react' import AddressPicker from 'react-address-picker-cc' import { district } from './district'; export default class Sync extends Component { state = { address: '', dataSource: district, selectedIdList: [340000, 341800, 341824] } showPicker = () => { this.ecRef.show() } hidePicker = () => { this.ecRef.hide() } onAddressChange = (selectedRows) => { this.setState({ address: selectedRows.map(item => item.areaName).join(','), selectedIdList: selectedRows.map(item => item.id), }) console.log('选择值:', selectedRows) } render () { const { dataSource, selectedIdList } = this.state return ( <div> <h1>同步获取</h1> <input onClick={this.showPicker} value={this.state.address} placeholder="请选择地区" readOnly style={{ width: '100%' }} /> <AddressPicker dataSource={dataSource} selectedIdList={selectedIdList} text='这是收货地址组件' ref={e => (this.ecRef = e)} onAddressChange={this.onAddressChange} onClose={this.hidePicker} /> </div> ) } } ``` ## Props <table class="table table-bordered table-striped"> <thead> <tr> <th style="width: 100px;">属性名</th> <th style="width: 50px;">类型</th> <th style="width: 50px;">默认值</th> <th>描述</th> </tr> </thead> <tbody> <tr> <td>title</td> <td>String | node</td> <td>配送至</td> <td>标题</td> </tr> <tr> <td>className</td> <td>String</td> <td></td> <td>跟节点class</td> </tr> <tr> <td>dataSource</td> <td>array</td> <td></td> <td>数据源</td> </tr> <tr> <td>onClose</td> <td>Function</td> <td></td> <td>关闭时回调函数</td> </tr> <tr> <td>onAddressChange</td> <td>Function</td> <td></td> <td>选择完闭时的回调函数; (selectedRows) => {}</td> </tr> <tr> <td>navTips</td> <td>string</td> <td>请选择</td> <td>下一项的提示文字</td> </tr> <tr> <td>pickerStatusChange</td> <td>Function</td> <td></td> <td>Picker展开收齐的回调;(status) => {}</td> </tr> <tr> <td>selectedIdList</td> <td>array</td> <td></td> <td>初始化地址的id数组</td> </tr> <tr> <td>isAsyncData</td> <td>boolean</td> <td></td> <td>是否异步获取数据</td> </tr> <tr> <td>getOneLevelData</td> <td>Function</td> <td></td> <td>获取第二、三层数据的方法,isAsyncData后有效<br />并且以Promise的方式返回dataSource</td> </tr> </tbody> </table> ## 重要版本升级记录 - v1.1.0-beta.4 - 恢复 getDerivedStateFromProps 方法 - v1.1.0-beta.3 - 删除 getDerivedStateFromProps 方法设置,在show方法上初始化数据 - v1.1.0-beta.2 - 源代码改用TypeScript重写 - 增加CSS变量更改样式主题,提供暗色主题 - 对 `getOneLevelData` 方法进行优化,注意要以Promise的方法返回 dataSource - v1.0.0 首次上线,包含异步获取收货地址、Touch切换 ## 近期升级计划 - [ ] 尝试添加单元测试用例 ## 测试场景 * 功能测试简单列举 * 外部设置 * 空 * 省级 * 县级 * 省市县切换 * 同级切换 * 10级别切换效果 * 触摸切换 * 上下级切换 * 小范围切换 * 升级过程bug列表,都已修复 * 小范围移动bug * 同步,关闭重新打开的效果 * 只有一级的效果,”请选择“ ## 参考链接 借鉴了同行的组件 **[react-picker-address](https://github.com/LANIF-UI/react-picker-address)** ## License MIT © [https://github.com/shenghanqin/](https://github.com/https://github.com/shenghanqin/)