我想破坏根Preact DOM节点。我最初将组件渲染如下:
import { h, render } from 'preact';
import App from "./components/App";
render(<App />, document.querySelector("#app");
如何销毁App
?我是简单地卸载#app
DOM节点,还是Preact提供与React的unmountComponentAtNode()
方法类似的方法?
答案 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表面积。 unmountComponentAtNode
中preact-compat
的实现实际上只是用render
调用null
:
// Excerpt from compat for Preact X
function unmountComponentAtNode(container) {
if (container._prevVNode!=null) {
render(null, container);
return true;
}
return false;
}