vue jsx多层map嵌套问题

vue jsx多层map嵌套问题

数据格式为:

this.form.data[i].col[i].col[i].data[i]

需要取到最后这层的data为数据,但是,最后这层data可能是为空的,这就导致了会出现 Cannot read properties of undefined (reading 'map')的情况。

原错误代码↓

render: (h, params) => {

const subjectId = { subjectId: this.form.subjectId }

return <div class='text-left'>

{

params.row.data.map((item, index) => {

{

item.col.map((obj, index) => {

{

obj.col.map((obj, index) => {

const rules = obj.data || []

return <RuleModule ref='ruleModule' v-model={rules} index={0} multiple-limit={1} subject-id={this.form.subjectId} />

})

}

})

}

})

}

</div>

}

还有一种情况是在新增的时候,也就是前面几层都为空的情况下,我需要如何才能把数据也绑定到最后这层data里

在这里先感谢各位大神们的解答,小弟感激不尽!


回答:

可以使用可选运算符 ?. 来防止链式调用出现用空值上读取属性的错误,如:

// 最后可使用 ?? 或者 || 判断来给予一个默认值

this.form.data?.[i]?.col?.[i]?.col?.[i]?.data?.[i] ?? defaultValue

像是你在 jsx 中嵌套可以这样写

const render = (h, params = {}) => {

const subjectId = { subjectId: this.form.subjectId }

return <div class='text-left'>

{

(params.row?.data || []).map((item, index) => {

{

(item.col || []).map((obj, index) => {

{

(obj.col || []).map((obj, index) => {

const rules = obj.data || []

return <RuleModule ref='ruleModule' v-model={rules} index={0} multiple-limit={1} subject-id={this.form.subjectId} />

})

}

})

}

})

}

</div>

}


回答:

item.col.mapobj.col.map改成item.col?.mapobj.col?.map
新增的时候也验一下,位置为空就建呗。

以上是 vue jsx多层map嵌套问题 的全部内容, 来源链接: utcz.com/p/936730.html

回到顶部