taro2.x开发支付宝小程序踩坑总结(持续更新~)

api篇

  1. showActionSheet的success 返回参数在微信为tapIndex,支付宝为index,可做兼容处理:
let tapIndex = res && (res.tapIndex || res.index);
  1. showModal在不传cancelText时,支付宝的取消按钮会显示undefined,因此每次使用带取消按钮的模态弹窗时,都应该传cancelText。
    补充:showModal的另外一个坑:success回调里,按确认按钮的话,res.confirm为true;按取消则res.confirm为false。不会有res.cancel!!!
  2. requestPayment不兼容支付宝,支付宝支付用my.tradePay,同时需要注意:支付宝用户取消支付时,是进success回调!!!可以通过res.resultCode得知用户取消了支付:
// 用户取消了支付
if (res.resultCode === '6001')
  1. login不兼容支付宝,支付宝登录用my.getAuthCode,详见支付宝小程序文档。
  2. 支付宝授权,获取手机号之类的也是跟微信不同的,详见支付宝小程序文档。
  3. createSelectorQuery在支付宝里需要在in()方法里传上下文:
// weapp
Taro.createSelectorQuery()
// alipay
Taro.createSelectorQuery().in(this.$scope)

样式篇

  1. 组件样式中的externalClasses对支付宝无效,如:custom-class,笔者的解决方案是:开启addGlobalClass,但是这样存在外部样式无意间污染组件样式的风险,现实情况也确实发生了。我的reset.scss覆盖了所有的组件样式:
// reset.scss
view,
text {
    font-size: 28px;
    font-weight: 500;
    line-height: 1;
}
// demo.js
render() {
    return (
        <View className='demo'>
            <Text className='demo__text'>demo</Text>
        </View>
    )
}
// demo.scss
.demo__text {
    line-height: 1.5;
}

这种情况在支付宝生效的样式是line-height: 1而不是line-height: 1.5,这就是全局样式污染了,我的解决方案是:增加css权重

// demo.js
render() {
    return (
        <View className='demo'>
            <Text className='demo__text weighted1'>demo</Text>
        </View>
    )
}
// demo.scss
.demo__text.weighted1 {
    line-height: 1.5;
}

这样,line-height: 1.5就生效了。

  1. 外部自定义样式给组件使用,我们可以传className作为props给组件,当然addGlobalClass是要开启的:(注意:addGlobalClass 这个 API 只对 Page 上的 class 起作用。)
// 组件Comp
import classNames from 'classnames'

render() {
    return (
        <View className={classNames('comp', this.props.className)}>
            hello world
        </View>
    )
}
// 页面
render() {
    return <Comp className='hello' />
}
/* 页面.scss */
.hello.comp {
    color: red;
}
  1. 按钮默认样式支付宝与微信不同,为了与微信统一,需要添加:
.my-button {
    margin-left: auto;
    margin-right: auto;
    border-radius: 10px;
    padding-left: 28px;
    padding-right: 28px;
    line-height: 2.55555556;
    border: 0;
}
  1. z-index负值在支付宝上表现不佳,通常,我们会把背景div设置z-index为负值来防止覆盖主内容,然而在支付宝中背景div直接就看不到了,汗-_-||。目前我的解决方案是:主内容div设置z-index值(任意值),背景div不设置z-index来解决。

组件篇

  1. label 官方原话


    label.png

    所以还想用label绑定button的同学可以洗洗睡了,改回button布局吧。

  2. navigator 支付宝navigator不能绑定点击事件,所以改用view,至于想要有hoverClass的效果,可以参考以下代码:
<View hoverClass='navigator-hover-class'>click me</View>
.navigator-hover-class {
    background: #EDEDED;
}
  1. button 如果自己项目的按钮没有点击态的话,记得设置hoverClass='none',否则在支付宝点击按钮时可能巨丑无比。

额外注意

使用分包需要注意,小程序无问题,到了支付宝就无法跳转分包路径了,真是巨坑!
目前我的解决方案是定制不同的app.json(即支付宝不使用分包),定制不同app.json参考Taro文档(2.x关于分包的似乎找不到了),但是没有关西,下面上示例代码:

// app.js
class App extends Component {
    config = {
        pages: preval`
            module.exports=(function() {
              if (process.env.TARO_ENV === 'weapp') {
                return [
                    'pages/index/index'
                ]
              }
                return [
                  'pages/index/index',
                  'pages/my/index',
                ]
            })()
          `,
          subpackages: preval`
            module.exports=(function() {
              if (process.env.TARO_ENV === 'weapp') {
                return [
                {
                    root: 'pages/my',
                    pages: [
                        'index'
                    ]
                }
            ]
              }
              return []
            })()
          `
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容

  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,575评论 0 7
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,308评论 0 11
  • 兼容性:环境:ios 端,微信打开H5页面问题描述:在登录页面,有输入手机号,以及输入验证码input框两个,点击...
    webmrxu阅读 235评论 0 0
  • 编程语言的种类和发展: 机器语言:机器指令,直接执行 汇编语言:符号化 高级程序设计语言(编译型) 高级程序设计语...
    welun阅读 1,409评论 0 2
  • top 10的算法:我们只需要维护一个10个大小的数组,初始化放入10Query,按照每个Query的统计次数由大...
    SeanC52111阅读 316评论 0 0