gpt4 book ai didi

reactjs - React 13.3 unmountComponentAtNode()错误: Target container is not a DOM element

转载 作者:行者123 更新时间:2023-12-03 13:30:42 24 4
gpt4 key购买 nike

当我从 React 12.2 升级到 React 13.3 时,我的测试套件中出现以下错误:

Error: Invariant Violation: unmountComponentAtNode(...): Target container is not a DOM element.

我正在使用this blog post使用 Jasmine 测试我的代码。错误发生在这段代码中:

describe("A component", function() {

var instance;
var container = document.createElement("div");

afterEach(function() {
if (instance && instance.isMounted()) {
// Only components with a parent will be unmounted
React.unmountComponentAtNode(instance.getDOMNode().parent);
}
});
...rest of test suite...
// the instances of renderIntoDocument that cause the failure look like the below
it("Causes my test suite to fail.", function() {
instance = TestUtils.renderIntoDocument(<MyReactElement/>);
});
)};

我知道 getDOMNode() 已被弃用,但这并不是导致错误的原因。

当我检查 instance.getDOMNode() 时,它返回给定的实例,但是当它出错时,instance.getDOMNode().parent 未定义。在此 undefined variable 上调用 React.unmountComponentAtNode 会导致错误。

类似this one的答案表明存在某种竞争条件,但我不确定这如何适用于我的测试套件。感谢您的帮助!

最佳答案

解决方法是更改​​:

React.unmountComponentAtNode(instance.getDOMNode().parent);

至:

React.unmountComponentAtNode(instance.getDOMNode().parentNode);

或者,如果您从 getDOMNode() 迁移到 findDOMNode():

React.unmountComponentAtNode(React.findDOMNode(instance).parentNode);

关于reactjs - React 13.3 unmountComponentAtNode()错误: Target container is not a DOM element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31090074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com