Deck 使用 React Native 实现的 Github 客户端 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
skyline75489
V2EX    分享创造

Deck 使用 React Native 实现的 Github 客户端

  •  
  •   skyline75489
    skyline75489 2015-06-06 13:21:23 +08:00 6689 次点击
    这是一个创建于 3789 天前的主题,其中的信息可能已经有所发展或是发生改变。
    项目地址: https://github.com/skyline75489/Deck

    目前还在开发中,就实现了截屏展示的几个功能。

    顺便吐槽一下 React Native,现阶段 React Native 还是太不成熟了,有很多坑真的是只有自己踩过才知道。。。
    第 1 条附言    2015-06-06 20:16:04 +08:00
    看来大家对开发过程中遇到的坑比较感兴趣,写了一篇文章供大家参考: https://skyline75489.github.io/post/2015-6-6_react-native-deck-for-github.html
    第 2 条附言    2015-06-08 08:58:15 +08:00
    官方的Top 10 大坑:
    19 条回复    2015-06-08 17:08:55 +08:00
    66450146
        1
    66450146  
       2015-06-06 15:30:36 +08:00
    听楼主这么说我就放心了,还好新的项目没直接上……
    crazyxin1988
        2
    crazyxin1988  
       2015-06-06 16:34:47 +08:00
    不知道 android版本的react native会是啥样子。
    满满都是坑 哈哈
    dementrock
        3
    dementrock  
       2015-06-06 16:45:02 +08:00 via Android
    lz可以介绍下具体遇到过哪些坑吗?主要集中在什么方面呢?
    lht91225
        4
    lht91225  
       2015-06-06 16:47:55 +08:00
    同问,有那些坑呢?
    skyline75489
        5
    skyline75489  
    OP
       2015-06-06 17:38:05 +08:00
    @dementrock 简单说一个吧,我两次试着升级 React Native ,升完都崩了。。。
    dementrock
        6
    dementrock  
       2015-06-06 20:34:02 +08:00
    @skyline75489 具体是升级前后版本不兼容吗?还是新版本引入了更多bug?
    我们团队自己也在做类似RN的框架,希望能尽可能地了解潜在的坑会是在什么方面。
    dementrock
        7
    dementrock  
       2015-06-06 20:34:28 +08:00
    @skyline75489 哈 刚看到附言 研究一下
    openroc
        8
    openroc  
       2015-06-06 22:20:15 +08:00
    直接进坑观摩~
    tamamaxox
        9
    tamamaxox  
       2015-06-07 11:25:59 +08:00
    看了文章,有些地方明明就是lz没有理解透reactjs的原理,例如第二个<TouchableOpacity OnPress={this.handlePress()}>
    就应该写成<TouchableOpacity OnPress={this.handlePress}>
    skyline75489
        10
    skyline75489  
    OP
       2015-06-07 11:50:58 +08:00
    @tamamaxox 我确实是初学 React,有些地方理解还不够深刻。这个地方只是举个例子,因为后面是需要传参的,这里就写了一个传空参数的。我也求教一下,如果需要传参的话,应该怎么写比较好?
    skyline75489
        11
    skyline75489  
    OP
       2015-06-07 11:57:59 +08:00
    @tamamaxox 我试了一下,换成 this.handlePress 也是会报错的,不过之前是在加载的时候就报,现在改成了在点击之后报。
    xylitolLin
        12
    xylitolLin  
       2015-06-07 18:31:25 +08:00
    @tamamaxox

    我也想请教一下,如果这个handle函数是要传参的,要怎么写才是 “理解透reactjs的原理” 的写法
    tamamaxox
        13
    tamamaxox  
       2015-06-07 19:15:37 +08:00
    @xylitolLin 真要传参数可以把handlePress写成

    handlePress(params){
    //...
    return function(){
    ..
    }.bind(this);
    }
    tamamaxox
        14
    tamamaxox  
       2015-06-07 19:19:05 +08:00
    @xylitolLin

    然后:
    <TouchableOpacity OnPress={this.handlePress(params)}>


    但是我觉得react的设计不需要到传参的情景吧
    angkec
        15
    angkec  
       2015-06-07 20:28:39 +08:00 via Android
    写成 OnPress={function(){this.handlePress()}}?
    skyline75489
        16
    skyline75489  
    OP
       2015-06-07 20:49:06 +08:00
    @tamamaxox 一般的 ListView 每个 Row 点进去是另一个 View, 这个 View 知道自己要往哪里去,写自己的 handlePress 就可以了,不需要传参。

    传参这个主要是在时间线上要用到,一个时间线上可能提到用户,也可能提到仓库,比方说 xxx star 了 xxx 仓库,这种就坑爹了,一个 Row 里有两个 Touchable 需要处理,只能通过传参解决。
    skyline75489
        17
    skyline75489  
    OP
       2015-06-07 20:49:53 +08:00
    @angkec 现在看来写成匿名函数的写法是可行的,看起来也比较简洁。我已经改成匿名函数的写法了 https://github.com/skyline75489/Deck/blob/master/App%2FComponents%2FEventRow.js#L54
    hpze2000
        18
    hpze2000  
       2015-06-08 16:22:45 +08:00
    楼主 这个坑帮我看看啥问题。
    $ react-native init AwesomeProject
    This will walk you through creating a new React Native project in /Users/johnson/AwesomeProject
    npm WARN engine [email protected]: wanted: {"node":"~0.10"} (current: {"node":"0.12.4","npm":"2.10.1"})

    [email protected] install /Users/johnson/AwesomeProject/node_modules/react-native/node_modules/ws
    (node-gyp rebuild 2> builderror.log) || (exit 0)

    初始化项目的时候, 一直卡在那, 是需要翻墙么??
    skyline75489
        19
    skyline75489  
    OP
       2015-06-08 17:08:55 +08:00
    @hpze2000 这就是在 Build 啊,确实挺慢的,就等会儿呗
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     948 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 21:53 PVG 05: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