react.js - 请问我遍历这种格式的数据为什么会报错呢,怀疑是this的问题,不知道怎么改
问题描述
报错信息:
数据格式是这样的:遍历payload下的department的信息,以及department下的departments数组内的信息
这是我写的代码,请问我有些错吗,怀疑是this的问题
renderDptName(){
if (this.state.dptName != undefined){
var dptname = this.state.dptName;
var arr =[];
this.mapDptChild(dptname,arr)
}
return arr;
},
mapDptChild(dpt,container,lvl){
lvl = lvl || 0;
var that = this;
$.map(dpt,function (d,i) {
var pid = d.pid || null;
var key = pid+'-'+d.id;
container.push(<li key={key}>{d.name}</li>)
if (d.departments.length){
$.map(d.departments,function (dd,i,rw) {
rw(dd,container,lvl+1)
},that.mapDptChild)
}
}.bind(this))
}
本来觉得你这个可能不是技术问题,所以直接在评论里回复的。。。不过要写代码,我就在这里回复了。。。
先扯一下为什么不认为是
this
的问题?
由于你是在React
里面写的,而且是ES5
的写法,所以this
一般都会自己绑定到组件本身的。
即使不这么看,你是通过this.mapDptChild
来调用mapDptChild
方法的。既然你能调用到这个方法,那么this.mapDptChild
中的this
肯定是组件本身,由此判断mapDptChild
中的this
也是组件本身。
最后一点,就是你在mapDptChild
中就没有怎么用到this
,更和length
属性无关,所以肯定不是this
的问题。
分析一下错误,
由于错误是报的
length of undefined
,所以我猜是d.departments.length
那里的报错(如果不是,请点出哪里报的错),所以可以得出d.departments
是undefined
为什么
d
里面没有departments
啊,我觉得只可能,要么是dpt
不是你图里面的department
,要么就是某个department
里面没有departments
建议方法
如果是d.departments.length
处报错,那么就在if
处进行判断,并输出,看看到底是哪个数据的问题。知道是什么问题以后,在根据情况修改。
if (d.departments == null) { console.log(d); }
if (d.departments.length){
$.map(d.departments,function (dd,i,rw) {
rw(dd,container,lvl+1)
},that.mapDptChild)
}
这篇关于react.js - 请问我遍历这种格式的数据为什么会报错呢,怀疑是this的问题,不知道怎么改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!