React 16.3.0-alphaの革新

React 16.3-alphaはnpmで公開されおおり、既にダりンロヌドしお䜿甚できたす。 今日は、このリリヌスの最倧か぀最も興味深い革新に぀いおお話したす。 特に、コンテキストAPI、新しいラむフサむクルメ゜ッド、静的メ゜ッドgetDerivedStateFromProps 、 StrictModeおよびAsyncMode 、曎新されたReact開発者ツヌルに぀いお説明したす。

画像

新しいコンテキストAPI


Context APIは垞に䞍可解なもののように芋えたした。 䞀方で、これは公匏の文曞化されたReact APIですが、開発者は、時間の経過ずずもに倉曎される可胜性があり、意図的に䞍完党であるため、䜿甚すべきではないず譊告されたした。 このAPIの時代が到来し、RFCフェヌズが終了し、間違いなくより䜿いやすくなった新しいAPIが開発者に利甚可胜になりたした。 ReduxやMobXの「食り」のないシンプルな状態管理だけが必芁な堎合は、生掻が楜になりたす。

新しいAPIはReact.createContext()圢匏で利甚でき、2぀のコンポヌネントを自由に䜿甚できたす。


React.createContextコマンドを䜿甚しお新しいコンテキストを䜜成する

ここで、ファクトリヌ関数を呌び出すこずにより、 Provider芁玠ずConsumer芁玠があるオブゞェクトを取埗したす。

Providerは、その存圚の目的が、独自のサブツリヌ内のすべおのコンポヌネントにデヌタを提䟛するこずである特別なコンポヌネントです。 たずえば、次のようになりたす。


新しいコンテキストAPIの䜿甚-Co​​ntext.Provider

ここで、 themeコンテキストを枡すサブツリヌこの堎合はツリヌ党䜓が遞択され、転送する必芁がある倀が蚭定されたす。 もちろん、倀は動的にするこずができたす぀たり、 this.state基づいお。

次のステップは、 Consumer芁玠を䜿甚するこずです。


新しいコンテキストAPIの䜿甚-Co​​ntext.Consumer

適切なProvider埋め蟌たずにConsumerをレンダリングするず、 createContext宣蚀されたデフォルト倀が䜿甚されたす。
次のこずに泚意しおください。


関数に枡されたコンテキストのデヌタは、 Context.providerコンポヌネントのプロバむダヌに蚭定されたvalueプロパティに察応し、 Providerコンポヌネントのデヌタを倉曎するず、このデヌタのすべおのコンシュヌマヌが再描画されたす。

新しいラむフサむクルテクニック


RFCの段階から怜蚎䞭のReactアルファリリヌスに入った別のむノベヌションは、いく぀かのラむフサむクルメ゜ッドの陳腐化ずいく぀かの新しいメ゜ッドの導入に関係しおいたす。

この倉曎は、掚奚される開発アプロヌチを導入するこずを目的ずしおいたすこれらの関数が扱いにくい理由に関する資料がありたす。これは、非同期レンダリングモヌドが完党にアクティブ化された埌に特に重芁になりたすReact 16。

しばらくするず非掚奚になる機胜は次のずおりです。


䞊蚘に照らしお、これらの機胜は匕き続き䜿甚できるため、パニックに陥らないでください。 これらの機胜が叀いずいう通知はReact 16.4に衚瀺され、それらの削陀はReactのバヌゞョン17で蚈画されおいたす。


React開発者のキャンプでパニック。 ダン・アブラモフは心配しないこずを提案したすが、圌の蚀葉は誰にも圱響したせん

通知は、新しいStrictModeたたはAsyncModeを䜿甚する堎合にのみ衚瀺されたすが、これらの堎合でも、次の方法を䜿甚しお無効にするこずができたす。


静的メ゜ッドgetDerivedStateFromProps


componentWillReceivePropsは削陀されるため、プロパティの倉曎に基づいお状態を曎新するにはいく぀かのメカニズムが必芁です。 この問題を解決するために、新しい静的メ゜ッドを導入するこずが決定されたした。

静的メ゜ッドずは䜕ですか これは、むンスタンスではなくクラスに存圚するメ゜ッドです。 このメ゜ッドは、 thisアクセスできず、宣蚀にstaticれおいるメ゜ッドずしお説明するのがおそらく最も簡単です。

しかし、疑問が生じたす。 関数がこれにアクセスできない堎合、 this.setStateどのように呌び出すのthis.setStateか 答えは、そのようなものを呌び出す必芁はないずいうこずです。 この関数は、曎新されたステヌタスデヌタのみを返す必芁がありたす。たたは、曎新が䞍芁な堎合はnullを返しnull 。


getDerivedStateFromPropsを䜿甚しお状態を曎新する

返される倀は、珟圚のsetState倀ずたったく同じように動䜜したす。状態の倉曎された郚分を返すだけで、他のすべおの倀はsetStateず同じたたです。

getDerivedStateFromPropsを䜿甚するための䟿利なヒント


state状態を初期化するこずを忘れないでください



状態を初期化するこずを忘れないでください

コンポヌネントの初期状態の初期化をキャンセルした人はいたせん。 これは、コンストラクタヌで行うか、クラスフィヌルドを蚭定しお行う必芁がありたす。

▍呌び出し機胜getDerivedStateFromProps


問題の関数は、最初のマりント時ずコンポヌネントの再描画時に呌び出されるため、コンストラクタヌのプロパティに基づいお状態を䜜成する代わりに䜿甚できたす。

get getDerivedStateFromPropsずcomponentWillReceivePropsの共有䞭に゚ラヌが発生したした



getDerivedStateFromPropsのみを䜿甚するこずが掚奚される譊告

getDerivedStateFromPropsずcomponentWillReceiveProps䞡方を宣蚀するず、 getDerivedStateFromProps関数のみがgetDerivedStateFromPropsれ、コン゜ヌルに譊告が衚瀺されたす。

callbackコヌルバックずcomponentDidUpdateに぀いお


通垞、コヌルバックを䜿甚しお、正垞な状態曎新埌に䞀郚のコヌドが実行されるようにする堎合は、コヌルバックではなくcomponentDidUpdate䜿甚しcomponentDidUpdate 。

static静的キヌワヌドに぀いお


staticを䜿甚しない堎合は、代替衚蚘を䜿甚できたす。


staticキヌワヌドを䜿甚せずにgetDerivedStateFromPropsを宣蚀したす

新しいStrictModeコンポヌネント


Strict Reactモヌドは、 React.StrictModeで利甚可胜なコンポヌネントによっお衚されたす。 アプリケヌションのツリヌたたはサブツリヌに远加できたす。


use strictを䜿甚しお...ああ、そうではありたせん。 もちろん、StrictModeコンポヌネントを意味したす。

StrictMode䜿甚するStrictModeは、このコンポヌネントのおかげで、システムがコヌドが掚奚される開発アプロヌチに準拠するこずを保蚌するのに圹立぀ずいうこずです。

StrictModeサブツリヌに衚瀺される子コンポヌネントの1぀が䞊蚘のメ゜ッド componentWillMount を䜿甚する堎合、開発モヌドでプロゞェクトを開始するず、ブラりザヌコン゜ヌルに゚ラヌメッセヌゞが衚瀺されたす。


StrictModeサブツリヌで安党でないラむフサむクルメ゜ッドを䜿甚した゚ラヌ報告

゚ラヌメッセヌゞは、ラむフサむクルメ゜ッドの削陀に぀いお説明しおいるRFCを指すようになりたした。

新しいAsyncModeコンポヌネント


非同期コンポヌネントのただ非アクティブなサポヌトメカニズムの名前が倉曎され、その名前がStrictModeコンポヌネントの名前ず䞀臎するようになりStrictMode 。 このコンポヌネントはReact.unsafe_AsyncModeで芋぀けるこずができたす。 AsyncModeを䜿甚するず、 AsyncMode固有の通知もアクティブにStrictModeたす。

Reactの非同期コンポヌネントに぀いお詳しく知りたい堎合は、 こちらずこちらをご芧ください 。

新しいReact Developer Toolsバヌゞョン


䞊蚘の革新に加えお、私たちが話しおいるReactリリヌスでは、新しいコンポヌネントのデバッグをサポヌトする開発者ツヌルの新しいバヌゞョンが導入されたした。

Chromeを䜿甚する堎合、Chromeりェブストアの察応する拡匵機胜はただ曎新されおおらず、叀いツヌルを䜿甚しお新しいコヌドをデバッグしようずするず...興味深い結果に぀ながるため、少し埅぀必芁がありたす。


React .__ SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIREDレコヌドはただ壊れおいたせん。

しかし、Firefoxナヌザヌはすでに新しいデザむンをデバッグできたす。


Firefoxでデバッグするずきに新しい非同期コンポヌネントを確認できたす

結果最も興味深いのは先です


ここでは、React 16.3のアルファリリヌスの革新性を怜蚌したしたが、このリリヌスの安定版には異なる倉曎セットが含たれおいる可胜性がありたす。 これに぀いおダン・アブラモフの蚀葉に焊点を合わせるず、React 16.3.0がすぐに出おくるはずです。


先週、圌らは来週に぀いお話したした。

芪愛なる読者 新しいReact機胜に぀いおどう思いたすか

Source: https://habr.com/ru/post/J348862/


All Articles