从今天开始决定使用Taro开发小程序,有坑就慢慢填,祝我好运吧,以后我会把我遇到的问题找时间都记录在这里。
1、Taro里使用currentPage获取当前所在页的实例使用setDate方法失效
打印发现在taro里Taro.getCurrentPages().pop()
和微信小程序里的wx.getCurrentPages().pop()
仔细看是不一样的,最终发现
`Taro.getCurrentPages().pop().$component===wx.getCurrentPages().pop()
注意这里的wx.getCurrentPages().pop()是指在微信小程序里的原生方法,在taro里打印wx.getCurrentPages().pop()和Taro.getCurrentPages()是一样的,具体原因不明可能是taro官方对Taro.getCurrentPages()进行了二次封装吧
2、Taro convert 转taro时会缺少部分文件
< text class="IredSum" wx:if="{{redObj.remainCount}}">今日可拆{{redObj.todayCount<1?0:redObj.todayCount}}次</ text >
把{{}}的三目运算去掉就能正常转换这个文件了,我也觉得很奇怪
3 map循环报错
VM4024:1 TypeError: Cannot read property ‘map’ of undefined
加上默认的props就好了
class _C extends Taro.Component {
constructor(props) {
super(props);
}
static defaultProps={
proList:[],
}
....
}
4、在小程序中可以在子组件直接修改props里的数据,在子组件中是生效的,但是在taro中这样修改无效,可以改为修改父元素的data来达到修改子组件props的效果
closeHandler() {//关闭按钮
Taro.getCurrentPages().pop().$component.setData({//修改父组件的状态
ruleShow: false
})
}
5、taro convert转成taro代码后,在父组件中的子组件标签名会转换错误,以前驼峰命名的,转换后没有驼峰了,手动改一下就好了
6、Taro.canvasToTempFilePath保存图片报错 errMsg: “canvasToTempFilePath: fail canvas is empty”
解决方法:Taro.canvasToTempFilePath的第二个参数是传入上下文的this,在taro里需要改成this.$scope,最好把相关方法需要传入的this都改一下
比如:
const ctx = Taro.createCanvasContext('Canvas',this.$scope)
参考这位大佬的,具体请去链接:https://segmentfault.com/a/1190000019299888?utm_source=tag-newest
7、在mobx方法中找不到参数,是因为没有正确调用mobx里面的方法
let {goSeartchHandler}=this.props.seartch
goSeartchHandler(head) //错误 这样调用会导致这个方法内找不到this
this.props.seartch.goSeartchHandler(head) //正确
8、taro报错找不到这个页面,怎么都解决不了
解决方法:试一下修改文件名为index.tsx
9、mobx里面状态改变页面没有重新渲染
解决方法:检查一下 mobx 有没有写该状态的初始值
10、在render函数中无法侦听到mobx中数组长度的变化,如下面的例子tabs初始值是空数组,数组更新后,在jsx中tabs的length一直是0
解决方法:在mobx另写一个状态表示该数组的长度
11、jsonp请求在编辑器中正常运行,在真机中无法正常请求,真机调试面板也找不到这项请求。
解决方法:支付宝小程序应该是不支持jsonp请求,改用get或其他请求方式。