非同期反応—設定状態

まず、Reactは楽しいです。私はそれに足を踏み入れ始めたばかりですが、なぜそれが業界を席巻したのかはすでにわかります。興味深いアプリケーションを開発しているスピードは素晴らしく、学び続けることに興奮しています。

私が気づいたことの1つは、ReactはJavaScriptに基づいて構築されているため、シングルスレッドアプリケーションであるということです。これは、JavaScript(およびReact)が一度に実行できることは1つだけであることを意味します。最適化されたシングルスレッド言語であるため、非常に効率的で迅速に実行できますが、その性質上時間がかかるアクションが存在する場合があります。このコードはブロッキングコードと見なされ、JavaScriptはそれをわずかに異なる方法で処理します。

コードをブロックする一般的な例は、APIフェッチ、データベースへの保存、Reactでの状態の設定です。これらのコードは不確定な時間がかかる可能性があるため(特に、返される情報の量や接続の品質がわからないためフェッチします)、スムーズに実行し続けるために、JavaScriptが終了するまで遅延します。現在のキュー。準備ができていない場合、この遅延は大きな影響を与える可能性があります。そのため、フェッチを使用する.then()かawait、フェッチを操作するときに、JavaScriptにフェッチが完了するのを待ってから、関連する手順に進むように指示します。

では、Reactで状態を設定するのはどうですか?前述したように、これも非同期アクティビティであり、このトピックに関するReact Docsによると、setState()アクティビティはバッチ処理される可能性があります。あなたが気づいていて注意していない場合、これはいくつかの非常に奇妙なバグにつながる可能性があります。

たとえば、以下の関数はnewPokemonオブジェクトを取り込んで、その状態の既存のポケモンの配列に追加します。

addNewPokemon = (pokemon) => {
    this.setState({pokemon:[...this.state.pokemon, newPokemon]})
}

前の状態

setStateが呼び出されると、関数が最初に呼び出されたときの状態と、その時点で使用可能な小道具にアクセスできます。

this.setState((previousState, previousProps) => {
    return{ //your state setting stuff here }
    }
);

this.setState( function( previousState, previousProps ) {
   return { //your state setting stuff here }
   }
);

addNewPokemon = (pokemon) => {
    this.setState(oldState => {
       return { pokemon: [...oldState.pokemon, newPokemon]}
    })
}

したがって、ReactアプリケーションでsetStateを使用するときは、Reactで待機する必要がある場合に備えて、前の状態を使用することを忘れないでください。

提案された投稿

脳卒中の壊滅的な結果を避ける: 家族の旅から学ぶ 。

脳卒中の壊滅的な結果を避ける: 家族の旅から学ぶ 。

はじめに 脳卒中は、いつでも誰でも起こり得る医療上の緊急事態です。これは、脳の一部への血流が中断され、脳機能が突然失われることで発生します。

私が最もよく使用するコーディング リソース

私が最もよく使用するコーディング リソース

今週、毎日のメールリストのメンバーからメールを受け取りました。彼らは次のことを知りたかったのです。毎日、毎週、毎月どのリソースにアクセスしていますか? 素晴らしい質問です!私のワークフローと使用している主なリソースについての洞察を共有したいと思います。

関連記事

危険な会話

危険な会話

私たちがこの地球上で繁栄し続けたいのであれば、危険な会話をしなければなりません。私たちがこれまでやってきたこと、現在行っていること、そして現在継続して行う予定の(または計画している)ことに挑戦するものです。

カウボーイの嘘

巨大企業はいかにしてアメリカ国民にひどい嘘を売ったのか

カウボーイの嘘

西のなだらかな丘陵地帯では、太陽の最初の光が平原の曇った草を照らす、まばゆいばかりの金色の朝です。真っ黒で巨大な穏やかなアンガス牛の群れが日の出を背景にシルエットを描き、誰もがよく知っている場所へ人里離れた道を進んでいます。朝食バー。

アートは政治的ではないのでしょうか?

アートは政治的ではないのでしょうか?

昨日、私たちは今年のユーロビジョン・ソング・コンテストの幕を閉じました。きらびやかでカオスなグランドフィナーレでスウェーデンの歌手ローリーンがトロフィーを持ち帰り、女性として初めて2回優勝し、ABBAがコンテストで優勝してから50年目にその栄冠をスウェーデンに持ち帰りました。 「ワーテルロー」で。彼らはポップ ミュージックの規範において最大のアーティストの 1 つになりました。

電話番号だけで誰でも追跡 | OSINT調査

電話番号だけで誰でも追跡 | OSINT調査

あなたは、OSINT 調査員、CTF プレーヤー、または単にスパム電話を受けている人である可能性があります。広告で見た番号を確認しようとしている人。