琼华
琼华
  • 发布:2022-03-20 18:11
  • 更新:2022-03-26 16:48
  • 阅读:460

【报Bug】uni-data-picker 的 localData为空,导致TypeError: Cannot convert undefined or null to object

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 序列号(系统): C02FV6P9MD6M

HBuilderX类型: 正式

HBuilderX版本号: 3.3.11

第三方开发者工具版本号:

基础库版本号:

项目创建方式: HBuilderX

示例代码:

....
load() {
if (this.readonly) {
this._processReadonly(this.localdata, this.dataValue)
return
}

            if (this.isLocaldata) {  
                this.loadData()  
                this.inputSelected = this.selected.slice(0)  
            } else if (!this.parentField && !this.selfField && this.hasValue) {  
                this.getNodeData(() => {  
                    this.inputSelected = this.selected.slice(0)  
                })  
            } else if (this.hasValue) {  
                this.getTreePath(() => {  
                    this.inputSelected = this.selected.slice(0)  
                })  
            }  
        },  

....
_extractTree(nodes, result, parent_value) {
console.log(nodes)
let list = result || []
let valueField = this.map.value
for (let i = 0; i < nodes.length; i++) {
let node = nodes[i]

    let child = {}  
    for (let key in node) {  
      if (key !== 'children') {  
        child[key] = node[key]  
      }  
    }  
    if (parent_value !== null && parent_value !== undefined && parent_value !== '') {  
      child.parent_value = parent_value  
    }  
    result.push(child)  

    let children = node.children  
    if (children) {  
      this._extractTree(children, result, node[valueField])  
    }  
  }  
},

操作步骤:

<uni-data-picker :localdata="cityEnum" v-model="defaultCity" popup-title="请选择省市区"
parent-field="type" @change="cityChange" />

预期结果:

能够正常走下,而不是报错

实际结果:

mp.runtime.esm.js?66fd:5818 TypeError: Cannot convert undefined or null to object
at uni-forms-item.vue:250
at Array.forEach (<anonymous>)
at VueComponent.unInit (uni-forms-item.vue:247)
at VueComponent.destroyed (uni-forms-item.vue:186)
at invokeWithErrorHandling (mp.runtime.esm.js?66fd:1862)
at callHook (mp.runtime.esm.js?66fd:4159)
at VueComponent.Vue.$destroy (mp.runtime.esm.js?66fd:4014)
at Ze.detached (index.js?543d:1846)
at o.safeCallback (WASubContext.js?t=wechat&s=1647768240122&v=2.17.0:2)
at o.call (WASubContext.js?t=wechat&s=1647768240122&v=2.17.0:2)

bug描述:

在uni-data-picker.vue源码中,方法load() 中的this.isLocaldata 判断为true,但是当走下之后,在_extractTree方法中nodes就变成了null

2022-03-20 18:11 负责人:无 分享
已邀请:
小枫叶

小枫叶 - 外包接单加v:wlmk1234567 注明来意

你判断下,如果为空的时候组件不加载

  • 琼华 (作者)

    我自己改了,主要怕之后更新,把这个覆盖了,那啥时候也没有人知道这里改过

    2022-03-26 14:55

小枫叶

小枫叶 - 外包接单加v:wlmk1234567 注明来意

你在外层你的代码那个地方改一下

该问题目前已经被锁定, 无法添加新回复