[解決済み] ReactJSの「開発モード」をON/OFFするには?
質問
ReactJSの propの検証機能 を使い始めました。ドキュメントによると、パフォーマンス上の理由から「開発モード」でのみ機能するようです。
Reactは私がアノテーションした特定のコンポーネントのプロパティを検証しているようですが、私は明示的に「開発モード」をオンにした覚えはありません。
開発モードをトリガー/トグルする方法を検索してみましたが、うまくいきませんでした。
どのように解決するのですか?
他の回答は、reactの外部ビルド済みファイルを使用することを前提としており、正しいのですが、それはほとんどの人々がしようとしている方法または を使用する必要があります。 パッケージとして React を消費する方法ではありません。さらに、現時点では、ほとんどの React ライブラリおよびパッケージは も は、実運用中に開発時間ヘルパーをオフに切り替えるために、同じ規則に依存しています。最小化された React を使用するだけで、これらすべての潜在的な最適化もテーブルの上に置いておくことになります。
最終的に、このマジックは、React が
process.env.NODE_ENV
への参照をコードベース全体に埋め込むことで、機能トグルのように動作します。
if (process.env.NODE_ENV !== "production")
// do propType checks
上記は最も一般的なパターンであり、他のライブラリも同様です。そこで、これらのチェックを無効にするには、以下のように
NODE_ENV
を
"production"
dev mode を無効にする適切な方法は、選択したバンドルを通して行うことです。
ウェブパック
を使う。
DefinePlugin
をwebpackの設定に追加してください。
new webpack.DefinePlugin({
"process.env.NODE_ENV": JSON.stringify("production")
})
ブラウザ化
ブラウザで
Envify
変換を行い、browserify のビルドステップを
NODE_ENV=production
(
"set NODE_ENV=production"
Windowsの場合)
結果
これは、出力バンドルに
process.env.NODE_ENV
を文字列リテラルに置き換えた出力バンドルが生成されます。
"production"
ボーナス
変換されたコードを minify するとき、"Dead Code Elimination" を利用することができます。DCE とは、minifier が十分に賢く、それを認識することです。
"production" !== "production"
は
常に
falseなので、ifブロック内のコードを削除するだけで、バイト数を節約できます。
関連
-
[解決済み】Reactを使用したMapBoxのCSSが欠落している件
-
[解決済み] sh: react-scripts: npm start の実行後にコマンドが見つからない。
-
[解決済み] React JS Jestで「SyntaxError: 予期しないトークン"
-
[解決済み] ReactJS - SCRIPT1010: 期待される識別子 - IE11 で本番ビルドが実行されない
-
[解決済み] ReactJSでコンポーネントがtext型の非制御入力を制御エラーに変更する場合
-
[解決済み] ReactJS Componentに複数のクラスを追加する方法は?
-
[解決済み] ReactJS - .JSと.JSXの比較
-
[解決済み】 {this.props.children} に props を渡すには?}
-
[解決済み】ReactJS - "setState "が呼ばれるたびにrenderが呼び出されるのですか?
-
[解決済み】ReactJS 2つのコンポーネントが通信しています。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] MUI Boxは何のためのコンポーネントですか?
-
[解決済み] React + TypeScript のエラーです。この呼び出しにマッチするオーバーロードがありません
-
[解決済み] 'Proptypes'が定義されていない
-
[解決済み] react jsでウィンドウを開くイベントを処理するにはどうすればよいですか?
-
[解決済み] reactstrapのドロップダウンで選択されたアイテムを設定する方法は?
-
[解決済み] react.jsでng-ifに相当するものは何ですか?
-
[解決済み] validateDOMNesting警告React
-
[解決済み] Static HTML elements with event handlers require a role." を修正するにはどうすればよいですか?
-
[解決済み] React Hooksの「exhaustive-deps」lintルールを理解する
-
[解決済み] React」は定義される前に使用されていた