Dan Abramovによる蚘事「Reactに぀いお誰も教えおくれないもの」に関する詳现なコメント

みなさんこんにちは Reduxの䜜成者であるダン・アブラモフは最近、Medium Thingsに関する蚘事にかなり倧芏暡なコメントを残したした。React.jsに぀いおは誰もあなたに話さないでしょう。

実際、珟圚の蚘事は、圌の解説の私の翻蚳です。埌者には、React / React Routerの珟圚および将来の状況に関する貎重なコメントが含たれおいるからです。

これが誰かに圹立぀こずを願っおいたす。










こんにちは、フィヌドバックをありがずう :)







Reactでの䞍快な経隓を共有しおいただきありがずうございたす。







あなたの投皿にはReactコミュニティで広たっおいる誀解が含たれおいるので、少し時間をずっお同じ問題を抱えおいる人に説明したいず思いたした。







これは、Reactが誰にずっおも同じようにうたく機胜するこずや、提起した問題が無関係であるこずを意味するものではありたせん。 しかし、私の意芋では、これらの問題を正しく理解するために特定するこずが重芁ないく぀かのポむントがありたす。







Facebookは次のメゞャヌリリヌスに向けおフレヌムワヌクを完党に曞き盎す蚈画を発衚したばかりであり、これはおそらくコヌドが砎棄されるこずを意味しおいるため、React 15.5.0でアプリケヌションの䜜成を開始したした。珟圚の゜ヌスコヌドはサポヌトされなくなったためです。


「完党に曞き換えられた」には䞋䜍互換性があるため、このステヌトメントは正しくありたせん。 次のリリヌスに぀いお話すずきはい぀でもこれを匷調したすが、それでも、もう䞀床繰り返す䟡倀がありたす。







React 16ただ凊理䞭 は 「リラむト」されおいたすが、同じパブリックAPIを持っおいたす。 Facebookの30,000以䞊のコンポヌネントのうち、倉曎する必芁があるのは玄12個だけであり、これらのいく぀かのコンポヌネントはサポヌトされおいない文曞化されおいない動䜜に䟝存しおいたした。







これに基づいお、互換性は文字通り99.9です。 これにより、React 16があなたのコヌドで動䜜するずいう自信が埗られたす。







停滞のない安定性ぞのコミットメントに぀いおは、こちらをご芧ください。







フレヌムワヌクを䜿甚しおプロゞェクト党䜓を蚭定する方法の専門家ではありたせんこの䜜業をcreate-react-appなどのcli-toolに委ねるこずに懐疑的です 


Reactアプリの䜜成は、WebpackずBabelの䞊にある薄いレむダヌです。 プロゞェクトコヌドは生成されたせんが、掚奚される方法でこれらのツヌルを構成したす。







次の文の定型文ず開始コヌドに関する苊情は、特にこの問題の解決策があるこずを考えるず、あたり公平ではないようですが、あなたは意図的にそれを䜿甚しないこずに決めたした。







この分野にはただ倚くの䜜業がありたすが、過去1幎間で状況は改善されたず思いたす。Reactを将来再び䜿甚するこずに決めた堎合は、圌にチャンスを䞎えおください。







2、3時間のリファクタリングの埌、Reduxに倧量のボむラヌプレヌトコヌドActionTypes、Actions、Reducers、connect ...が必芁なため、コヌドが成長し続け、以前の3倍になったこずに気付きたした


特に䞍芁な堎合はReduxを䜿甚しないでください。明らかに倚くの定型文が含たれおいるためです。







Reactには状態システムが組み蟌たれおいたす。コンポヌネント間で状態を分散する必芁がある堎合は、これから始めお状態をより高いレベルに䞊げるこずをお勧めしたす。







必芁に応じおい぀でもReduxを远加できたすが、MobXたたはReduxで開発を開始するこずは、倚くの堎合猿です。







React-routerはFacebookによっお公匏にサポヌトされおおらず、その開発者はわずか5か月で3぀のメゞャヌバヌゞョンをリリヌスするずいう玠晎らしいアむデアを持っおいたした。


私はReact Routerず提携しおいたせんが、この蚘述は間違っおいるず思いたす。 React Routerリリヌスをフォロヌしおいる堎合は、次のこずに泚意する必芁がありたす。









したがっお、自分が䜕をしおいるかわからないかもしれないずしお安定したバヌゞョンにアップグレヌドするだけであれば、バヌゞョン1.0から2.0ぞの移行はほずんど問題なく行われおいるはずです。 たくさんの譊告が衚瀺されるはずであり、次のメゞャヌリリヌス3.0でこれらの譊告が削陀されるたでに8か月間修正する必芁がありたした。







3.0の盎埌にバヌゞョン4.0が登堎したこずは間違いありたせん。 4.0は完党に曞き盎されたバヌゞョンであり、その哲孊はわずかに異なりたすこれは、Issues React Routerで長幎にわたっお報告されおきた倚くの゚ラヌず問題を修正するために行われたす。 バヌゞョン4.0が3.0の盎埌にリリヌスされたこずは正しいです。 しかし、ここにそのようなものがありたす-あなたは絶察にそれに切り替える必芁はありたせん。 3.0を䜿甚しおいるアプリケヌションはただ倚くあり、そのブランチは匕き続き積極的にサポヌトされおいたす。 したがっお、バヌゞョン3.0を䜿甚しおいる堎合は䜕も起こりたせん。開発チヌムは、これに関心のある方がバヌゞョン4.0に簡単に移行できるように移行パッチに取り組んでいたす。







結果ずしお、リリヌスの安定バヌゞョンのみを䜿甚した堎合、React Routerは新しいAPIに切り替える䞀幎を䞎えたした。 圌らは長幎の問題を修正するために4.xバヌゞョンをリリヌスしたしたが、必芁に応じお3.xブランチを維持するこずにコミットしおいたす。 私の意芋ではそれほど悪くないようです







問題が䜕であるかを理解するず、りサギの穎に匕きずり蟌たれ、アプリケヌションが正垞に機胜できるようにするために、空のdivをどこにでも匷制的に远加したした

JS関数を䜿甚しお単玔に機胜コンポヌネントをレンダリングできたすが、仮想DOMが正しく䜜成されるように、すべおのマヌクアップを䜕らかのタグでラップする必芁がありたす


あなたがそれに泚意を払っおくれおうれしい React 16はrender()



関数から配列を返すこずをサポヌトするため、これらすべおのdivおよびラッピングタグを削陀できたす。 私たちはあなたの人生をより良くするために努力しおいたす。







Reactは、サヌバヌ偎PHPなどのファむルの䜿甚を眮き換えるために生たれた高床なレンダリングフレヌムワヌクであり、このツむヌトを確認するHTMLず混合されおいるようです。


それがあなたの蚀うこずを正確に理解しおいたせんでした。 しかし、Reactが私たちおよびAirbnb、Twitter、Pinterest、その他の䌚瀟の補品を䜿甚しおいる人たちに理にかなっおいる理由に興味がある堎合、Reactは、明瀺的なデヌタストリヌムずDOMツリヌの手動制埡の欠劂のおかげで、通垞蚀っおいたすバグの少ないアプリケヌションを䜜成したす。 そしお、これらの問題を解決するために他の戊略を芋぀けるこずができれば玠晎らしいこずです。







この蚘事では、䞀郚の開発者がReactが圹立぀ず考える理由の詳现を明らかにしおいるので、それを芋おみるこずをお勧めしたす たた、Reactが問題を解決しない堎合や、問題を解決するためにEmberやAngularなどの代替フレヌムワヌクを単に奜む堎合にも圹立ちたす。







明らかな単玔さは、たった1行のコヌドを曞き始める前に構成する必芁のある䞀連のツヌルの背埌に隠れおいたす。


必芁に応じおES6およびJSXなしで React を䜿甚できるため、このステヌトメントは正しくありたせん。 アプリケヌションに1぀のスクリプトタグを蚘述するのず同じくらい簡単です。







しかし、ビルドツヌルは有甚であるず考えおいたすリンタヌの䜿甚に぀いお蚀及しおいる堎合、おそらく同じ意芋がありたす。 構成は簡単ではありたせんが、Create React Appなどの゜リュヌションにより、よりアクセスしやすくなり、基本的なプロゞェクトWebpackなどが時間ずずもに䜿いやすくなるこずを期埅しおいたすWebpack 2は、この分野で順調に進歩しおいたす構成チェック。 したがっお、私はこれらのプロゞェクトに぀いお楜芳的ですが、人々がそれらなしでReactを䜿甚したい理由を理解しおいたす。







React react-dom



をむンポヌトし、スクリプトにreact



react-dom



必芁がありたす。埌者を䜿甚するこずはありたせん。Reactチヌム自䜓にしかわからない䜕らかの理由で


理由は、JSXコヌドを倉換するにはReactスコヌプが必芁なためです。これは、JSXがグロヌバルブラりザヌ倉数を凊理する方法だからです。 これは以前の苊情に関連しおいるだけです。ビルダヌを䜿甚しなくおもJSXが機胜するようにしたいのです。







DOMのCSSクラスを定矩するには、 class



代わりにclassName



を䜿甚する必芁がありたす


あなたは完党に正しいです、それは迷惑です。 これは、DOM APIに基づいた最も早い蚭蚈決定の1぀であり、混乱を招きたす。 これは将来倉曎できたす







そしお、Github Issuesで1000以䞊のヒットがあるフレヌムワヌクに䜕を期埅したしたか


React NativeのAPIははるかに広く、非垞に人気があるため、問題で倚くの呌び出しを受け取るこずは圓然です。 それらの倚くはサポヌトのリク゚ストですが、バグを修正し、人々が問題を解決するのを支揎するのに圹立぀こずを感謝しおいたす。







ネむティブアプリケヌションを開発するために、デフォルトのアルファ䟝存関係React@16.0.0-alpha.6を蚭定できるのは䜕ですか


Reactパッケヌゞバヌゞョンは、コヌド Component



およびcreateElement



がほずんど含たれおいないため、䞀般にReact Nativeナヌザヌには適しおいたせん。 reconciler



コヌドは、React Nativeず個別に同期したす。 したがっお、これはRNずReactのさたざたなリリヌスサむクルのアヌティファクトですが、RNアプリケヌションが䞍安定なバヌゞョンのReactを䜿甚するこずを意味するものではありたせん。 これは、Facebookで制䜜に䜿甚しおいるものずたったく同じバヌゞョンです。 私は同意したすが、これは混乱を招くものであり、近い将来にReactずReact Native間のリリヌスプロセスを修正したいず考えおいたす。







芁玄するず、あなたの蚘事でこれらの問題を提起したこずに感謝したす。 圌らは非垞に頻繁に珟れ、皮をもみ殻から分離するこずが重芁だず考えたした。 しかし、私たちずReact゚コシステムがReactナヌザヌにより䟿利なものを提䟛するために、間違いなくもっず倚くの仕事がありたす。これらの䞀般的な問題を定匏化しお、よりよく解決できるこずを嬉しく思いたす。







線集このコメントの最初のバヌゞョンの受動的な攻撃性を指摘したすべおの人に感謝したいず思いたす。 私はこれに぀いお非垞に謝眪したす 私はより専門的な口調でそれを線集したした。それは出版前にやらなければなりたせんでした。 絵文字もすべお削陀したしたが、Twitterでそれらを芋぀けるこずができたす。








All Articles