blog.koba04.comkoba04's twitter accountkoba04's GitHub account

React.js Links vol.9

2016/07/21 @koba04

これはReactに関する記事や気になるissueなどのリンクを紹介する記事です。

React v15.2.1

Bug Fixやwarningの追加などが中心です。

Introducing React's Error Code System

React v15.2.0で導入されたエラーコードシステムの解説です。 これにより、プロダクションビルドでもエラーの詳細を確認することができるようになります。

Design Principles

Reactのドキュメントに新しく「Contributing」というセクションが追加されて、Design Principlesというドキュメントが追加されました。 今後、実装のOverviewなどが追加される予定で楽しみです。

Design Principlesでは、Reactが何を重要に考えていてどのように開発をされているかということを「Composition」「Common Abstraction」「Escape Hatches」「Stability」「Interoperability」「Scheduling」「Developer Experience」「Debugging」「Configuration」「Beyond the DOM」「Implementation」「Optimized for Tooling」「Driven by Facebook」という分類で解説されています。

Reactを始める時に最初に読む必要はないですが、Reactについてもっと知りたい人や、Reactを使うかどうか判断する場合に、とてもドキュメントになっています。

Mixins Considered Harmful

Facebook内のコードからMixinを削除しているという話をCore Noteで何度か紹介していましたが、その際の知見も含めた形で、Mixinからの移行を促すエントリーです。 (Mixin自体は、React.createClassに残されます)

Facebook内でMixinが利用されていたケースを取り上げ、High Order Componentsなどのパターンで置き換える方法が丁寧に説明されています。

Design Principlesのドキュメントもそうですが、Dan AbramovがReact Teamに加わってから色々整備されて、よくなってきてるのを感じます。

Core Team meeting note

ReactComponentは複数のReactElementを返すことができないので、<div>などで囲む必要があるのですが、これをFragmentsのようなものを導入してどうにかするという話が出ています。 2016年中には入れたいという感じのようです。

Rollupを使ったUMD Bundleのサイズ削減も取り上げられています。 ReactはCommonJSで書かれているのでCommonJSからES Moudlesに変換してRollupに渡す形になっていて、将来的にはES Modulesに移行したいけど、Facebook内部のビルドシステムでES Modulesを使えないのでそうせざるを得ないということのようです。

ファイルサイズについて考えた時に、Reactのイベントシステムの部分が大きな割合を占めていて、これはブラウザー間のAPIや挙動の違いを吸収するレイヤーになっているけど、必要なのかということも取り上げられています。

Optimizing Compiler: Component Folding #7323

Reactでの新たな最適化についてのIssueです。 Constant foldingInline expansionDead code eliminationを使って最適化を行いたいようです。 一部はRollupがやっていることですね。

ただ、JSはデフォルトがMutableであったり、依存関係をどのように解決するのかなど検討すべき点は多そうです。

Codemod tests from createClass to ES2015 classes #7321

Codemodを使って、React.createClassで書かれたComponentをES2015 classesに変換するPRです。 Codemodのテストのようですが。

Has Redux's Time Come and Gone #775

ReduxとRelayやGraphQLを組み合わせることについての議論です。 この辺りの組み合わせについて興味がある人は読んでみるといいと思います。

[META] v3.0.0 (ReactRouter)

ReactRouter v3.0.0についてのIssueです。 alpha.1から結構経ってますがそろそろ出そうですね。

You might not need React Router

ReactRouterを使わずに、ReactRouterが内部で使っているhistoryを直接使えばいいのではというエントリーです。