写了好久的一个接近原生体验的 React 图片查看器组件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
wyn153409018
V2EX    分享创造

写了好久的一个接近原生体验的 React 图片查看器组件

  •  2
     
  •   wyn153409018 2018-02-03 17:10:40 +08:00 7572 次点击
    这是一个创建于 2856 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Feature

    • 双击放大指定位置(手势库使用 alloyfinger )
    • 为移动端而生,pc 端也可以正常使用)
    • 性能良好,我用骁龙 810 60fps 没问题。此外理论上支持展示无数张图片,不像大多数轮播图会把所有图片都渲染出来,这个组件同时最多渲染三张(前一张,当前图片,后一张)
    • 兼容性还不错,移动端应该没啥问题,其实我已经拿去在二线互联网公司的一个小产品上线了,不过要求 react16 以上.
    • 有测试(但 coverage 只有可怜的 17%,不知道算 feature 还是 bug ==)

    Todos

    • 多指放大,最早其实实现了,即 github 上的那张 gif,但是不能从指定位置放大所以改成双击了。
    • 组件进入推出动画
    • 重构!因为涉及到同时触摸控制父子元素,edge case 太多了。。。所以代码写的有些乱

    demo

    Edit l2xpwy3xrq

    Github

    一点点不成熟的总结

    第 1 条附言    2018-02-03 18:24:52 +08:00

    demo

    12 条回复    2018-02-06 00:29:11 +08:00
    wyn153409018
        1
    wyn153409018  
    OP
       2018-02-03 17:15:05 +08:00
    补充下,这个组件最麻烦的地方是处理触摸事件,当图片超出屏幕时应该触摸拖拽图片,在屏幕范围内则触摸拖拽整个列表,导致这个组件有些庞大( 24kb ungzipped)
    17 届的应届生,第一次发帖,也希望各位能够多多指点。
    wyn153409018
        2
    wyn153409018  
    OP
       2018-02-03 17:39:17 +08:00
    fengyj
        3
    fengyj  
       2018-02-03 17:47:25 +08:00
    不错的。mark 一下。
    Solix
        4
    Solix  
       2018-02-03 19:08:31 +08:00 via iPhone
    mark
    azh7138m
        5
    azh7138m  
       2018-02-04 12:32:27 +08:00 via Android
    Android7 chrome63,不能放大
    wyn153409018
        6
    wyn153409018  
    OP
       2018-02-04 14:06:38 +08:00
    @azh7138m 我也是安卓 7 chrome 哎,我这里没有问题很奇怪,有啥错误信息么,毕竟上线的东西,有 bug 我就 gg 了
    wyn153409018
        7
    wyn153409018  
    OP
       2018-02-04 14:10:27 +08:00
    @azh7138m 我猜你是不是点的是 loading 动画~
    azh7138m
        8
    azh7138m  
       2018-02-04 14:35:14 +08:00 via Android
    @wyn153409018 你等下,我开个调试看看
    azh7138m
        9
    azh7138m  
       2018-02-04 14:57:30 +08:00 via Android   1
    @azh7138m 不知道啥问题,电脑上没问题,手机上不行,更新到 64 也不行,我觉得是版本的问题,ff57 是可以的
    wyn153409018
        10
    wyn153409018  
    OP
       2018-02-04 15:26:45 +08:00
    @azh7138m 谢谢,我看一下
    sinchang
        11
    sinchang  
       2018-02-05 20:46:46 +08:00
    赞 代码很工整 看的很舒服
    wyn153409018
        12
    wyn153409018  
    OP
       2018-02-06 00:29:11 +08:00
    @sinchang 啊哈,谢谢表扬
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     872 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 22:53 PVG 06:53 LAX 14:53 JFK 17:53
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86