Можно ли во время выполнения определить, является ли текущая версия React разрабатываемой или производственной? Я бы хотел сделать что-то вроде этого:

if (React.isDevelopment) {
  // Development thing
} else {
  // Real thing
}

pfhayes

Ответов: 3

Ответы (3)

Лучше всего имитировать способ работы Node с помощью вашего инструмента сборки - webpack, browserify - путем раскрытия process.env.NODE_ENV. Как правило, у вас будет установлено значение «производство» в продукте и «разработка» (или неопределенное значение) в разработке.

Таким образом, ваш код становится:

if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') {
    // dev code
} else {
    // production code
}

Чтобы узнать, как его настроить, см. envify или Передача переменных, зависящих от среды, в webpack

• 100001

Источники: Ответ Дэвида выше и документация create-response-app для использования переменных среды в html файле

if ( ! '%NODE_ENV%' || '%NODE_ENV%' === 'development') {
  // dev code
} else {
  // production code    
}

Я использую вспомогательный файл (в Typescript):

import process from "process";

const development: boolean = !process.env.NODE_ENV || process.env.NODE_ENV === 'development';

export default function isDev(): boolean
{
    return development;
}

Тогда в другом месте я использую это так:

import isDev from "./helpers/DevDetect";

if (isDev())
{
    ...
}

2022 WebDevInsider