[解決済み] React HooksでcomponentWillMount()を使用するには?
質問
Reactの公式ドキュメントには、以下のように記載されています。
Reactのクラスのライフサイクル・メソッドに慣れている人なら、次のように考えることができます。 useEffectフックは、componentDidMount, componentDidUpdate, and componentWillUnmountを組み合わせたものです。
質問ですが、どのようにすれば
componentWillMount()
ライフサイクル・メソッドをフックに組み込むことができます。
どのように解決するのですか?
既存のライフサイクルメソッド(
componentDidMount
,
componentDidUpdate
,
componentWillUnmount
など)をフックに入れることができます。これらは、クラスコンポーネントでのみ使用できます。そしてフックでは、機能的なコンポーネントでのみ使用することができます。以下の行は、Reactのドキュメントから引用したものです。
Reactのクラス・ライフサイクル・メソッドに慣れている人なら、次のように考えることができます。
useEffect
フックとしてcomponentDidMount
,componentDidUpdate
およびcomponentWillUnmount
を組み合わせたものです。
は、これらのライフサイクルメソッドをクラスコンポーネントから機能コンポーネントに模倣することができることを示唆しています。
内部コード
componentDidMount
コンポーネントのマウント時に一度だけ実行します。
useEffect
この動作に相当するフックは
useEffect(() => {
// Your code here
}, []);
ここで2番目のパラメータ(空の配列)に注目してください。これは一度だけ実行されます。
2番目のパラメータを使用しない場合
は
useEffect
フックはコンポーネントのレンダリングごとに呼び出されることになり、危険です。
useEffect(() => {
// Your code here
});
componentWillUnmount
は、イベントリスナーを削除したり、タイマーをキャンセルしたりといった後始末に使用します。例えば、イベントリスナーを
componentDidMount
で削除し
componentWillUnmount
を以下のように設定します。
componentDidMount() {
window.addEventListener('mousemove', () => {})
}
componentWillUnmount() {
window.removeEventListener('mousemove', () => {})
}
上記のコードに相当するフックは、次のようになります。
useEffect(() => {
window.addEventListener('mousemove', () => {});
// returned function will be called on component unmount
return () => {
window.removeEventListener('mousemove', () => {})
}
}, [])
関連
-
[解決済み】TypeScript-のAngular Frameworkエラー - "exportAsがngFormに設定されたディレクティブはありません"
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] React JSX内のループ
-
[解決済み] useEffect React Hook使用時の依存性欠如の警告を修正する方法
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vueのグローバルがscss(mixin)を導入。
-
Javascript Bootstrapのグリッドシステム、ナビゲーションバー、ローテーションの説明
-
vueが定義するプライベートフィルタと基本的な使い方
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】ExpressJS - throw er Unhandled errorイベント
-
[解決済み】TypeScript-のAngular Frameworkエラー - "exportAsがngFormに設定されたディレクティブはありません"
-
[解決済み】ExpressJS : res.redirect()が期待通りに動かない?
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません