【JavaScript初心者】React.jsのよく出るエラーと解決集

React.jsはFacebook社が開発したJavaScriptのフレームワークでモダンなアプリケーションの一部分に使うとレンダリング周りでスムーズで拡張性の高いプロダクトが開発できると2015年頃から注目されている。ブラウザで表示するView周りでその効力を発揮するのだが、そのReact.jsでよくあるエラーとその解決方法についてまとめていきます。

rplay.me/3331

転職サイトに2、3個登録し、自分の市場価値を確かめることをお勧めします

2018年8月最新 ▼当サイトで申込みが多い転職サービスはこちら

【1位】BIZREACH(ビズリーチ)【10ヶ月連続1位】年収600万円以上の求人多数!

【2位】DODA(デューダ)【2位・非公開求人多数】・人気急上昇中

【3位】リクナビネクスト 【【未経験でも転職成功・適職無料診断】】

多くの求人サイトがありますが、人事採用担当者・転職エージェントの経験がある筆者が厳選しています。

React.createElement: type should not be null, undefined, boolean, or number.

React.jsでは下記のようにReactコンポーネントを記述することができる。しかし、これを書いてもエラーが起きてしまった場合は、どうすればいいのか。

<code><div></code>
で囲んでいるのは、JSXでコンパイルする時に2つ以上のコンポーネントを返せないため。仮に囲まないと、Adjacent JSX elements must be wrapped in an enclosing tagという例外が出る。

直接コンポーネントに渡してもいいが、それだと融通が利かないことも多い。なのでContainersを経由して、各ContainersのjsからさらにComponentの各部品を呼び出すという仕組みにしている。

https://github.com/reactjs/react-router/issues/2220

React.js+reduxでmetaをどのように入れればいいのか

react.jsを使った場合、初期に何も設定をしなければ、index.htmlが最初に読み込まれることになります。

そこで静的にデフォルトファイルに書いてしまうと、動的にCSSやJavaScript、TitleタグやDescriptionの変更を行うことができません。現代のウェブアプリケーションでSEO対策をしていないアプリケーションをスケールさせることは難しいでしょう。この辺りは基本的な事項として取り組んでおかなければなりませんので、ぜひreact-helmetを使ってみてください。

react-helmetの記述例

その場合に、react-helmetモジュールを使って下記のように記述します。

https://github.com/nfl/react-helmet#server-usage

React.jsでrouterが効かず任意のURLに遷移できない場合

下記のようにセキュリティのエラーが出ている場合か、普通に記述方法がまちがっている場合があります。
https://twinery.org/forum/discussion/4747/uncaught-securityerror-failed-to-execute-replacestate-on-history

Helmetを使っている場合に限りますが、urlを開発しているurlと同じ設定にしていないと動かない事があります。Helmetにそういう副作用があるとは…。Helmetはmetaの内容を記述しているモジュールだったので、Helmetのurlを開発環境用のURLに変更して解決しました。

そのほかでRouter周りで動かない場合はこの辺りもチェックしてみてはいかがでしょうか。

https://github.com/reactjs/react-router/issues/224

reduxを試してみた(4日目) – redux-react-routerを試す by @kompiro on @Qiita http://qiita.com/kompiro/items/de10197368f864c2e846

React.jsでthisがnullにケース

何かbuttonなどを押した時の処理を追加するというケースで、thisがnullになってしまいpropsがエラーになってしまうケースがあります。これはES6を使用している場合です。

Uncaught TypeError: Cannot read property 'props' of null

こういう場合に幾つかの解決策がありますが、bindしてthisを送る必要があります。

モダンな書き方だと下記のようになりますが、ES7の書き方なので、まだ仕様が変更される可能性があるために上記の書き方で解決しています。また、こちらの書き方だとwebstormでエラーが起きてしまうようです。基本的なところですが、なぜnullになるのか注意が必要です。

参考:Reactをes6で使う場合のbindの問題

RplayではReact.jsでのリプレイス・一部サービスを開発しています。
引き続きReact.jsについての情報を掲載していきます。

プログラミング学習で詰まった場合

プログラミングでエラー文言をみて自分で修正してみたもののわからないということもあるかと思います。会社であれば近くの先輩などに聞くこともできますが、独学している場合などは困ってしまいますよね。そういう時にプログラミングやデザインなどの質問に答えてくれるサービスをまとめておきましたので、困っている方はこちらを確認してみてください。

Reactの構文チェックにはairbnbのJavaScriptのスタイルガイドがオススメです。最近開発者の中で人気になってきてるので、Rplayでも導入してみました。その時に1から導入したときのまとめです。

2018年5月最新! ▼当サイトで申込みが多いプログラミングスクール・教室はこちら!

【1位】「ギークジョブ【10ヶ月連続1位!就職・転職成功率95%!上場企業へ内定】

【2位】WebCamp PRO (ウェブキャンププロ)【就職転職保証・返金保証・年収300万上がる】

【3位】WebCamp(ウェブキャンプ)【5ヶ月連続!3位】

ほかにも多くのプログラミングスクールがありますが、現役エンジニアが利用して間違いないスクールを厳選しています。

実際にWebCampに通って上場企業へ転職、年収が上がったエンジニアの話 → プログラミング未経験からエンジニアへ

この記事が気に入ったら
いいね!しよう

Rplayの最新情報をお届けします

TwitterでRplayをフォローする