ImagePicker 图片选择器

注意:只是图片选择器,一般用于上传图片前的文件选择操作,但不包括图片上传的功能

代码演示

简单的图片选择组件

  1. import { ImagePicker, Button } from 'antd-mobile';
  2. const data = [{
  3. url: 'https://zos.alipayobjects.com/rmsportal/PZUUCKTRIHWiZSY.jpeg',
  4. id: '2121',
  5. }, {
  6. url: 'https://zos.alipayobjects.com/rmsportal/hqQWgTXdrlmVVYi.jpeg',
  7. id: '2122',
  8. }];
  9. const ImagePickerExample = React.createClass({
  10. getInitialState() {
  11. return { files: data, custom: false };
  12. },
  13. onChange(files, type, index) {
  14. console.log(files, type, index);
  15. this.setState({
  16. files,
  17. });
  18. },
  19. onAddImageClick() {
  20. this.setState({
  21. files: this.state.files.concat({
  22. url: 'https://zos.alipayobjects.com/rmsportal/hqQWgTXdrlmVVYi.jpeg',
  23. id: '3',
  24. }),
  25. });
  26. },
  27. sw() {
  28. this.setState({
  29. custom: !this.state.custom,
  30. });
  31. },
  32. render() {
  33. const { files, custom } = this.state;
  34. return (<div>
  35. <Button inline style={{ margin: 10 }} onClick={this.sw}>{custom ? '自定义' : '常用的'}选择图片的方法</Button>
  36. {custom ? <ImagePicker
  37. files={files}
  38. onChange={this.onChange}
  39. onImageClick={(index, fs) => console.log(index, fs)}
  40. onAddImageClick={this.onAddImageClick}
  41. selectable={files.length < 5}
  42. /> : <ImagePicker
  43. files={files}
  44. onChange={this.onChange}
  45. onImageClick={(index, fs) => console.log(index, fs)}
  46. selectable={files.length < 5}
  47. />}
  48. </div>);
  49. },
  50. });
  51. ReactDOM.render(<ImagePickerExample />, mountNode);

ImagePicker图片选择器 - 图1

API ( 适用平台:WEB、React-Native )

成员说明类型默认值
files图片文件数组,元素为对象,包含属性 url(必选, 可能还有id, orientation, 以及业务需要的其它属性Array[]
onChangefiles 值发生变化触发的回调函数, operationType 操作类型有添加,移除,如果是移除操作,则第三个参数代表的是移除图片的索引(files: Object, operationType: string, index: number): void
onImageClick(web only)点击图片触发的回调(index: number, files: Object): void
onAddImageClick(web only)自定义选择图片的方法(): void
selectable(web only)是否显示添加按钮booleantrue

注: RN 版本回传 assets-library (性能考虑),需要使用 native 模块进行上传,可参考 https://github.com/facebook/react-native/issues/201