北风吹寒

  • 主页
  • 个人例子
所有文章 友链 关于我
    

北风吹寒

  • 主页
  • 个人例子

reactNative 相册分组的实现

2017-07-20

React Native 相册分组的实现

React Native 没有现成的实现相册分组, qq群有人我这个问题。就尝试实现了一下。

  • 首先先查看了React Native的相册接口 CameraRoll, 发现有得到相片的接口 getPhotos
  • 然后查看接口的参数,筛选其中有用的。第一眼就注意到了groupTypes, 可惜的是groupTypes安卓版本不支持。自己手机试了一下发现android是会得到groupName。 然后查看了一下自己手机相册的分组, 发现手机相册的分组基本就是按照groupName来进行的。
  • 那能不呢拿到所有图片数据然后遍历他们进行分组呢。
  • 应该是可以的,有个first参数是可以设置方法拿出的相片数量。然后通过这个方法来拿到所有相片数据。。然后分组就简单了.

https://github.com/wuguanghai45/rnPhotoGroupDemo

源码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import React, { Component } from 'react';
import { List } from "antd-mobile"; //用来antd mobile
import _ from "lodash";
import {
CameraRoll,
} from 'react-native';
const Item = List.Item;
const Brief = Item.Brief;
class App extends Component {
constructor(props) {
super(props);
this.state = {
categorys: [],
currCategory: null,
};
}
componentDidMount() {
this.getPhotoTypes();
}
getPhotoTypes = async() => {
const data = await CameraRoll.getPhotos({ first: 10000}); //得到10000条相片
const uniqTypesPics = _.groupBy(data.edges, (val) => {
return val.node.group_name;
}); // 根据他的group_name进行分组
let categorys =_.keys(uniqTypesPics).map((key)=> {
return {
name: key,
demoImage: uniqTypesPics[key][0].node.image,//拿到分组的第一张图片作为样例
count: uniqTypesPics[key].length,//拿到分组的图片数量
};
})
this.setState({
categorys: categorys
}); //对筛选的分组进行存储 因为是异步操作所以是不能直接得到值的。要先存到state里面
}
renderGroups = () => {
return this.state.categorys.map((category)=> {
return (
<Item
key={category.name}
arrow="horizontal"
multipleLine
thumb={category.demoImage.uri}
onClick={() => {
this.setState({
currCategory: category.name
});
}}
platform="android"
extra={category.count}
>
<Brief>{ category.name} </Brief>
</Item>
)
});
}
handleModalBack = () => {
this.setState({
currCategory: null
});
}
render() {
return (
<List className="my-list">
{this.renderGroups()}
</List>
);
}
}
export default App;

效果

待验证和讨论

  • 一开始拿出10000张图是否有性能问题?(我认为应该不会有太大问题,
    它应该是读取文件信息, 不是读取文件, 个人猜测)
  • 是否有必要一定拿出所有的图片
  • 是否有必要能成一个包
  • react
  • react native
  • 相册

扫一扫,分享到微信

微信分享二维码
如何省心的使用Antd的Modal
本站来自哪里
  1. 1. React Native 相册分组的实现
    1. 1.1. 待验证和讨论
© 2017 北风吹寒
Hexo Theme Yilia by Litten
到访数: , 本页阅读量:
  • 所有文章
  • 友链
  • 关于我

tag:

  • docker
  • 科学上网
  • Hexo
  • react
  • antd
  • node
  • react native
  • 相册

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 在线文档预览的实现使用docker unoconv

    2017-09-01

    #docker

  • Docker 安装ss和ipec2VPN 科学上网

    2017-08-02

    #docker#科学上网

  • 用Docker 打包封装简单的Node服务

    2017-07-29

    #docker#node

  • 解决 DTraceProviderBindings 构建错误

    2017-07-26

    #Hexo

  • React 实现鼠标hover的简单封装

    2017-07-26

    #react

  • ListView 初次加载空白 scroll后显示问题

    2017-07-25

    #react#react native

  • react-native run-android Exception in thread “main” java.util.zip.ZipException

    2017-07-22

    #react native

  • 如何省心的使用Antd的Modal

    2017-07-21

    #react#antd

  • reactNative 相册分组的实现

    2017-07-20

    #react#react native#相册

  • 本站来自哪里

    2017-07-19

    #Hexo

  • 布宝
轻度动漫迷,内向,有向肥宅发展的趋势,打算减肥,已办健身卡.