Reactで状態を取得する方法

藏色散人
リリース: 2022-12-30 11:13:21
オリジナル
3420 人が閲覧しました

React で状態を取得する方法: まず、対応する React コード ファイルを開き、次に React で「this.state.{property}」を通じて状態を直接取​​得できます。

Reactで状態を取得する方法

このチュートリアルの動作環境: Windows7 システム、react17.0.1 バージョン、Dell G3 コンピューター。

反応で状態を取得するにはどうすればよいですか?

react では、this.state.{property} を通じて状態を直接取​​得できますが、状態を変更する場合、注意が必要な落とし穴が多くあります。

次の 3 つの一般的なトラップ:

1. 状態を直接変更することはできません。

コンポーネントは状態を変更し、レンダリングは再トリガーされません。例:

//错误
this.state.title='React';
正确修改方式是使用setState();
//正确
this.setState({title:'React'});
ログイン後にコピー

2. 状態は非同期で更新されます

setState が呼び出されても、コンポーネントの状態はすぐには変更されません。変更される状態がイベント キューに入れられるだけです。実際の実行タイミングは最適化され、パフォーマンス上の理由により、複数の setState 状態変更が 1 つの状態変更にマージされる場合があります。したがって、次の状態を計算するために現在の状態に依存しないでください。状態の変更が実際に実行されるとき、依存する this.state が最新の状態であるとは保証されません。反応自体が複数の状態を 1 つにマージするためです。 .state は引き続き次の状態になります。 props の更新も非同期であるため、いくつかの状態変更前の状態は、現在の props に依存して次の状態を計算することもできません。 Eコマースアプリケーションの場合、ショッピングカート内で購入ボタンを1回クリックすると購入数量が1増加します。2回連続でクリックすると購入数量が2増加します。これは、次のコードを実行するのと同じです:

Object.assign(
previousState,
{quantity:this.state.quantity+1},
{quantity:this.state.quantity+1},
)
ログイン後にコピー

したがって、前の操作は上書きされ、最終的な購入数量は 1 だけ増加します。このとき、別の関数をパラメータとして setState として使用できます。この関数には 2 つのパラメータがあり、最初のパラメータは現在の状態 preState (このコンポーネントの状態が変更される前の状態) または最新の状態 (このコンポーネントの状態が更新された後の状態)、2 番目のパラメータは最新の props です。 。リストは次のとおりです:

//正确
this.setState((preState,props)=>({
counter:preState.quantity+1
}))
ログイン後にコピー

3. 状態の更新はマージ プロセスです

ssetState() を呼び出してコンポーネントの状態を変更する場合、変更された状態のみを渡す必要があります。コンポーネントの状態の更新はマージプロセスであるため、完全な状態ではなく状態です。たとえば、コンポーネントの状態は次のとおりです:

this.state({
title:'React',
content:'React is an wondeful JS library'
})
ログイン後にコピー

タイトルのみを変更する必要がある場合は、次のことのみを行う必要があります。変更されたタイトルを setState に渡します:

this.setState({title:'ReactJs'});
ログイン後にコピー

react は、元の状態のコンテンツを保持しながら、最新のタイトルを元の状態にマージします。最終的にマージされた状態は次のとおりです:

this.state({
title:'ReactJs,
content:''React is an wondeful Js library
})
ログイン後にコピー

関連する推奨事項: 「反応チュートリアル

以上がReactで状態を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート