いくつかの機能を共有するために、別のコンポーネントで構成できるラッパーコンポーネントを作成しました。基本的にラッパーコンポーネントは、新しいDOMNODEを作成し、そのようにその小道具から子コンポーネントをレンダリング:<AnotherThing />
のインスタンスのReactJS-子コンポーネントがアンマウントされない
//wrapper
componentDidMount() {
this.node = document.body.appendChild(document.createElement('div'));
}
componentDidUpdate() {
if (this.state.editing) {
ReactDOM.render(this.props.component, this.node);
} else {
ReactDOM.unmountComponentAtNode(this.node)
}
}
//component from within the props of the wrapper above
componentWillUnmount() { /* runs */ }
render() {
return (
<div>
<AnotherThing />
</div>
);
}
しかしcomponentWillUnmount()
がトリガされません。これはデフォルトですか、私はここで間違っていますか?サブツリー内のすべてのコンポーネントに対してcomponentWillUnmount()
がトリガーされると思います。
この
UPDATEはすべてそれが必要として働いています。私の時計プロセスが機能しなくなったので、アンマウントが見えませんでした。
なぜあなたのコンポーネントの内部でReactDOMを使っているのですか?私はあなたが達成しようとしていることを正確には分かっていませんが、多くのユースケースはレンダリング機能の選択的レンダリングか、より高いオーダーのコンポーネント – travelboy