分析+解决思路 Cannot read property ‘nodeState‘ of undefined

错误体现

TypeError: Cannot read property ‘nodeState’ of undefined 错误解析

运行过程没有问题但是会报错误,是不是很奇怪为什么,明明可以正常运行,哪这个错误从哪来
《分析+解决思路 Cannot read property ‘nodeState‘ of undefined》

背景条件

下边是我编码过程中遇到的问题,v-if哪里需要取数组nodeInfoList最后一个元素 的nodeState熟悉来判断是否需要显示这个view ,nodeInfoList数组是声明在data数据域中的,用来接收从后端返回的审批节点信息,初始时是空的
《分析+解决思路 Cannot read property ‘nodeState‘ of undefined》
《分析+解决思路 Cannot read property ‘nodeState‘ of undefined》

引用Vue的声明周期来说一下,当页面初始化后,应该是在创建阶段(或者挂载阶段我认为创建阶段可能性更大)就会使用v-if去判断这个view是否应该去创建。作为示例这个时间节点上我的判断条件nodeInfoList此时还是空数组。

为啥呢?

因为这个时候后端接口的反馈的数据还没到,后端接口反馈耗时肯定是要高于本地加载速度,既然是空数组哪就肯定不存在元素的熟悉什么的,所以直接取某个元素的属性作为判断条件的时候就会报Cannot read property ‘nodeState’ of undefined 这个错误 ,在这个判断后的某个时间上后端接口反馈的数据终于到了,这个属性就能取到了,所以我们才会看到页面上一切正常运行但是莫名奇妙的会报这个错,当你把整个过程拉长,找到里边报错的节点所在位置你就能理解为什么会有这种问题
《分析+解决思路 Cannot read property ‘nodeState‘ of undefined》

当后端接口反馈的数据到了如下结构,这时就满足判断条件,页面就能正常显示
《分析+解决思路 Cannot read property ‘nodeState‘ of undefined》

解决办法

先判断目标是否满足你的需要的结构然后再判断内容


<view v-if="(nodeInfoList.length>0) && nodeInfoList[nodeInfoList.length-1].nodeState == 0">

我是做Java开发但是前端和Linux都略懂略懂
下边是我的公众号,工作和开发学习过程中遇到的问题的解决方法和一些资源(软件)都会发布在上边,感兴趣的可以去看看点波关注看看有没有自己需要的资源
《分析+解决思路 Cannot read property ‘nodeState‘ of undefined》

    原文作者:pepper5
    原文地址: https://blog.csdn.net/pepper5/article/details/113915120
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞