如何销毁根Preact节点?

时间:2018-06-20 11:16:50

标签: javascript reactjs preact

我想破坏根Preact DOM节点。我最初将组件渲染如下:

import { h, render } from 'preact';
import App from "./components/App";

render(<App />, document.querySelector("#app");

如何销毁App?我是简单地卸载#app DOM节点,还是Preact提供与React的unmountComponentAtNode()方法类似的方法?

2 个答案:

答案 0 :(得分:0)

没有精确兼容,就没有像unmountComponentAtNode()这样的方法。 一种解决方法是使用render()方法的第三个参数将要卸载的组件替换为''null,如下所示: https://github.com/developit/preact/issues/53#issuecomment-184868295

答案 1 :(得分:0)

免责声明:我是在做正事。

通过将preact传递给null,可以轻松销毁任何渲染的render应用:

render(null, document.querySelector("#app"));

我们不需要任何特殊功能,因此已选择保留较小的API表面积。 unmountComponentAtNodepreact-compat的实现实际上只是用render调用null

// Excerpt from compat for Preact X
function unmountComponentAtNode(container) {
    if (container._prevVNode!=null) {
        render(null, container);
        return true;
    }
    return false;
}