0
短い話ですが、Reactに、既存の要素を再利用するのではなく、まったく新しい要素を作成したいと思います。これはコンストラクタを再度実行するためです。Reactが強制的に要素を破壊して再構成するような、ハックのない方法はありますか?
デフォルトでは、Reactはできるだけ再利用を試みます。ハックのある回避策は、要素にkey
プロパティを追加することです。たとえば、次のように
class Foo extends React.Component {
constructor() {
super();
this.state = {
forceReloadCounter: 0,
};
}
_forceReload() {
this.setState({forceReloadCounter: this.state.forceReloadCounter + 1});
}
render() {
return (
<ChildElement key={this.state.forceReloadCounter}/>
);
}
}
_forceReload
もし実行すると、それはChildElement
のkey
を変更するので、リアクトChildElement
の古いインスタンスを破棄して新しいものを構築します。しかし、このソリューションは明らかに非常にハッキリです。誰かがコードを読んでいると混乱するでしょう。より良い解決策はありますか?
要素を破棄して再構成する理由は何ですか? – Pineda
わかりませんが、単にDOMから削除するだけで問題はありませんか?ある条件が真である場合にのみそれをレンダリングする条件のように。 'render(){戻り条件? :null} ' –
' componentWillMount'は 'props'以外のソースからデータを取得します。すべてのデータをリセットしてデータを再フェッチするのは混乱します(要素が再利用された場合)。私は要素を再構築し、 'componentWillMount'をもう一度呼び出す方がクリーンであると思います。 –