[解決済み] React - 関数コンポーネントを強制的にレンダリングする方法は?
2022-04-23 14:44:47
質問
関数コンポーネントがあるのですが、強制的に再レンダリングさせたいのです。
どうすればよいのでしょうか?
インスタンスがないため
this
を呼び出すことができません。
this.forceUpdate()
.
解決方法は?
???? を使用することができます。 Reactフック
リアクトフックを使用することで
useState()
を関数コンポーネントの中で使用することができます。
useState()
は、2つのものの配列を返します。
- 現在の状態を表す値。
- セッターです。値を更新するために使用します。
セッターで値を更新すると、ファンクションコンポーネントの再レンダリングが強制されます。
,
と同じように
forceUpdate
がそうです。
import React, { useState } from 'react';
//create your forceUpdate hook
function useForceUpdate(){
const [value, setValue] = useState(0); // integer state
return () => setValue(value => value + 1); // update the state to force render
}
function MyComponent() {
// call your hook here
const forceUpdate = useForceUpdate();
return (
<div>
{/*Clicking on the button will force to re-render like force update does */}
<button onClick={forceUpdate}>
Click to re-render
</button>
</div>
);
}
上記のコンポーネントは、カスタムフック関数(
useForceUpdate
を使用します。
useState
. これは、コンポーネントの状態の値を増加させ、コンポーネントを再レンダリングするようにReactに指示します。
EDIT
この回答の古いバージョンでは、スニペットはブーリアン値を使用し、それを
forceUpdate()
. 今、私は私の答えを編集して、スニペットはブーリアンではなく、数字を使用しています。
どうして? (私に訊くのだろう)
なぜなら、かつて私の
forceUpdate()
が 2 つの異なるイベントから続けて 2 回呼び出されたため、boolean 値が元の状態でリセットされ、コンポーネントがレンダリングされませんでした。
これは
useState
のセッター (
setValue
ここで)。
React
前の状態と新しい状態を比較する。
で、状態が異なる場合のみレンダリングします。
関連
-
JSクロスドメインソリューション リアクト構成 リバースプロキシ
-
JSアレイループと効率解析の比較
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptのオブジェクトをループスルーまたは列挙するにはどうすればよいですか?
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] React JSX内のループ
-
[解決済み] setStateを呼び出さずにReactコンポーネントを強制的に再レンダリングすることは可能ですか?
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
JavaScriptの関数この指摘の問題を説明
-
vueネットワークリクエストソリューション ネイティブネットワークリクエストとjsネットワークリクエストライブラリ
-
Vue+ElementUIによる大規模なフォームの処理例
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
jQueryのコピーオブジェクトの説明
-
Javascript Bootstrapのグリッドシステム、ナビゲーションバー、ローテーションの説明
-
vueの補間表現とv-textディレクティブの違いについて
-
vueが定義するプライベートフィルタと基本的な使い方
-
[解決済み】GETできない / Nodejsエラー
-
[解決済み] setStateを呼び出さずにReactコンポーネントを強制的に再レンダリングすることは可能ですか?