tre*_*nik 21 javascript jsdom reactjs
有没有办法卸载和垃圾收集TestUtils.renderIntoDocument在jsdom测试中使用安装的React组件?
我正在尝试测试发生的事情componentWillUnmount并且TestUtils.renderIntoDocument不会返回任何要调用的DOM节点React. unmountComponentAtNode.
Sop*_*ert 28
不,但你可以简单地ReactDOM.render手动使用:
var container = document.createElement('div');
ReactDOM.render(<Component />, container);
// ...
ReactDOM.unmountComponentAtNode(container);
Run Code Online (Sandbox Code Playgroud)
这正是ReactTestUtils无论如何都要做的,所以如果你需要对容器的引用,没有理由不这样做.
Chr*_*ris 21
componentWillUnmount直接呼叫不适用于任何需要在卸载时清理东西的孩子.而且您也不需要复制该renderIntoDocument方法,因为您可以使用parentNode:
React.unmountComponentAtNode(React.findDOMNode(component).parentNode);
Run Code Online (Sandbox Code Playgroud)
更新:从React 15开始,您需要使用它ReactDOM来实现相同的目标:
import ReactDOM from 'react-dom';
// ...
ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(component).parentNode);
Run Code Online (Sandbox Code Playgroud)
只是为了更新@BenAlpert的答案.React.renderComponent将很快被弃用,因此您应该使用ReactDOM方法:
var container = document.createElement('div');
ReactDOM.render(<Component />, container);
// ...
ReactDOM.unmountComponentAtNode(container);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16193 次 |
| 最近记录: |