[解決済み] setStateを呼び出さずにReactコンポーネントを強制的に再レンダリングすることは可能ですか?
2022-03-22 09:13:55
質問
私は、外部(コンポーネントに対して)、変更をリッスンしたい観測可能なオブジェクトを持っています。このオブジェクトが更新されると、変更イベントを発行し、変更が検出されるとコンポーネントを再レンダリングしたいのです。
トップレベルの
React.render
を使用することができましたが、コンポーネント内ではうまくいきません (これは
render
メソッドは単にオブジェクトを返すだけです)。
以下はコード例です。
export default class MyComponent extends React.Component {
handleButtonClick() {
this.render();
}
render() {
return (
<div>
{Math.random()}
<button onClick={this.handleButtonClick.bind(this)}>
Click me
</button>
</div>
)
}
}
ボタンをクリックすると、内部で
this.render()
が作成するテキストは、実際にレンダリングが行われるわけではありません。
{Math.random()}
は変化しない)。しかし、もし私が単に
this.setState()
ではなく
this.render()
であれば、問題なく動作します。
そこで質問なのですが Reactコンポーネント が必要です。 は、再レンダリングするために状態を持っていますか?状態を変更せずに、コンポーネントをオンデマンドで強制的に更新させる方法はありますか?
解決方法を教えてください。
クラスコンポーネントでは
this.forceUpdate()
で強制的に再レンダリングします。
ドキュメンテーション https://facebook.github.io/react/docs/component-api.html
ファンクションコンポーネントには
forceUpdate
しかし
で強制的に更新する方法を考えましょう。
useState
フック
.
関連
-
[解決済み] MUI Boxは何のためのコンポーネントですか?
-
[解決済み] MUI Boxは何のためのコンポーネントですか?
-
[解決済み] 'Proptypes'が定義されていない
-
[解決済み] React JS Jestで「SyntaxError: 予期しないトークン"
-
[解決済み] 矢印本体を囲む予期せぬブロックステートメント
-
[解決済み] React Router - バージョン更新後のwithRouterでTypescriptエラーが発生する。
-
[解決済み] Reactコンポーネント外でのクリックを検出する
-
[解決済み] Reactでブラウザのリサイズ時にビューを再描画する
-
[解決済み] ReactのsetStateでオブジェクトを更新する
-
[解決済み] reactのsetStateメソッドを呼んでも、すぐにステートが変更されないのはなぜですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Angular 2の*ngForのReactでの同等品
-
[解決済み] react router dom v4でwebpack dev serverを構成する方法は?
-
[解決済み] React - _this2.SetStateは関数ではありません。
-
[解決済み] nginxでcertbotを使用する際の問題点
-
[解決済み] 矢印本体を囲む予期せぬブロックステートメント
-
[解決済み] react-router-domを使用する際に「Function components cannot be given refs」を回避する方法は?
-
[解決済み] React QueryとReduxの主な違いは何ですか?
-
[解決済み] Reactでネストした状態のプロパティを更新する方法
-
[解決済み] Reactのフックでコンポーネントを強制的に再レンダリングするにはどうしたらいいですか?
-
[解決済み] React - 関数コンポーネントを強制的にレンダリングする方法は?