[解決済み】React.jsでコンポーネントのpropsを更新することは可能ですか?
2022-04-05 13:23:01
質問
React.jsを使い始めてから、どうやら
props
は静的なもの(親コンポーネントから渡される)を想定しているのに対して
state
はイベントに応じて変更されます。 しかし、私はドキュメントで
componentWillReceiveProps
には、特にこの例が含まれています。
componentWillReceiveProps: function(nextProps) {
this.setState({
likesIncreasing: nextProps.likeCount > this.props.likeCount
});
}
このことは、あるコンポーネントのプロパティが、以下の比較に基づいて変更できることを意味しているように思える。
nextProps
から
this.props
. 何が足りないのでしょうか? プロップスはどのように変更されるのでしょうか、それとも、このプロップスが呼び出される場所について私が間違っているのでしょうか?
解決方法は?
コンポーネントは、配列またはオブジェクトでない限り、自身のプロップを更新できませんが(可能であってもコンポーネントが自身のプロップを更新することはアンチパターンです)、自身の状態とその子のプロップは更新することができます。
例えば、ダッシュボードが
speed
というフィールドがあり、その速度を表示するGaugeの子に渡します。その
render
メソッドは、単に
return <Gauge speed={this.state.speed} />
. Dashboard が
this.setState({speed: this.state.speed + 1})
の新しい値でゲージを再レンダリングします。
speed
.
こうなる直前に、ゲージの
componentWillReceiveProps
が呼び出され、Gauge が新しい値と古い値とを比較する機会を得ます。
関連
-
[解決済み】このエラーの原因は何ですか - "Fatal error: ローカルgruntを見つけることができません"
-
[解決済み】webpack-dev-serverにリモート接続すると、「Invalid Host header」というメッセージが表示されます。
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] オブジェクトが配列であるかどうかを確認するにはどうすればよいですか?[重複]。
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み] (a== 1 && a ==2 && a==3) が真に評価されることはあるのでしょうか?
-
[解決済み】 {this.props.children} に props を渡すには?}
最新
-
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のgetElementByNameが機能しない
-
[解決済み】Google Conversionsが動作しない - スクリプトが読み込まれない
-
[解決済み] React with ES7: Uncaught TypeError: Cannot read property 'state' of undefined [duplicate] (未定義のプロパティ'state'を読み込むことはできません。
-
[解決済み】コンソールがUnterminated JSX contentsエラーを投げる【終了しました
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】TypeError: res.status は関数ではありません。
-
[解決済み】ES6マップオブジェクトをソートすることは可能ですか?
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み】JavaScriptで関数が存在するかどうかを確認する方法は?
-
[解決済み】module.exports "モジュールが定義されていません"