无法获得财产'删除'未定义或空引用

时间:2015-11-27 16:26:53

标签: reactjs

根据我的客户端错误日志,我的ReactJS应用程序有时会抛出以下异常。

TypeError: Unable to get property 'remove' of undefined or null reference
   at M.willDeleteListener (eval code:17:25544)
   at v.deleteAllListeners (eval code:1:25843)
   at m.Mixin.unmountComponent (eval code:16:15442)
   at i.unmountComponent (eval code:15:5262)
   at unmountChildren (eval code:17:3368)
   at _.Mixin.unmountChildren (eval code:17:2153)
   at m.Mixin.unmountComponent (eval code:16:15442)
   at i.unmountComponent (eval code:15:5262)
   at _.unmountComponent (eval code:15:16416)
   at i.unmountComponent (eval code:15:5262)

我认为错误的来源是https://github.com/facebook/react/blob/35962a00084382b49d1f9e3bd36612925f360e5b/src/renderers/dom/client/eventPlugins/SimpleEventPlugin.js#L600

我无法复制(无论是在本地还是在制作中)。

可能导致此问题发生的原因是什么?我需要一些可以重现错误的事情想法。

3 个答案:

答案 0 :(得分:1)

我现在已经多次犯了这个错误,而且当我访问渲染功能中尚未存在的属性时,似乎就会发生这种情况。我的应用程序正在使用React / Redux和ImmmutableJS,并且在任何给定组件的安装上都会发生许多AJAX调用,所以我必须确保我突破了渲染功能,直到一切都是完成装载。例如,当我有这个时,我得到了有问题的错误:

render () {
 const displayName = this.props.myObject.get('displayName')
 if (this.props.loading) return <Loading />
 return <div>{displayName}</div>
}

但是当我切换加载检查时不是这样:

render () {
 if (this.props.loading) return <Loading />
 const displayName = this.props.myObject.get('displayName')
 return <div>{displayName}</div>
}

检查对象是否存在也可以解决这个讨厌的错误。

答案 1 :(得分:0)

Pi带@LaurelB的响应,我诊断出这种情况是在我根据某个值发生变化的变量切换事件绑定(例如onClick)的功能时在React元素上发生的。毕竟,我意识到这可能不是一个好习惯。

答案 2 :(得分:0)

我遇到了针对Angular 6应用程序的IE11中的错误val image = imageResource(R.drawable.android_studio_logo) val imageRatio = image.width.toFloat() / image.height.toFloat() val imageModifier = ImagePainter(image).toModifier(scaleFit = ScaleFit.FillMaxDimension) Box(LayoutWidth.Fill + LayoutAspectRatio(imageRatio) + imageModifier) 。我当时使用NgClass指令为SVG元素动态设置CSS类。

"Unable to get property 'remove' of undefined or null reference"

解决方案:IE10和IE11需要以下npm,NgClass才能支持SVG元素。

<svg viewBox="0 0 145 110" width="145" height="110" id="svg1">
     <path class="bg" [ngClass]="{'my-class': my-cond = 'condition'}" stroke="#ccc" />
 </svg>