写了一个图片选择器组件<images>,定义了数组类型的list属性,父组件中用了双向绑定:
<images model:list="{{selectedImages}}" />
子组件内只要调用 this.setData({list:[]}) 就会报错:Maximum call stack size exceeded
https://developers.weixin.qq.com/miniprogram/dev/framework/view/two-way-bindings.html
看文档中并没有限制双向绑定属性的数据类型,所以是底层的bug吗?
我也遇到了,type: String没问题,type: Array和type: Object都有问题,单步调试发现业务逻辑是没有递归/死循环的,就是小程序底层一直在调用setData,但调试器看不到底层源码,麻烦官方看看吧。
Component({ properties:{ value:{type:Object,value:{v: 0}} }, methods:{ setValue(){ this.setData({value: {v: 1}}); // 栈溢出的报错 this.setData({"value.v": 1}); // value会被设置成null } } })
这个提示语,就是说你的代码出现了死循环,一直在setData数据
Maximum call stack size exceeded这个报错是说setData次数太多了,得你自己排查看看是不是有死循环setData
子组件js:
Component({
properties:{
list:{type:Array,value:[]}
},
methods:{
setList(){
this.setData({list:[]})
}
}
})
父组件wxml:
<custom-comp model:list="{{parentList}}" />