Źródło ReactJS używa zmiennej o nazwie __DEV__
do śledzenia tego, ale nie jest ono eksportowane, więc jest niedostępne dla Twojego Mixina.
Jego konsekwencje są jednak. Kiedy złamiesz niezmiennik, na przykład tryb dev ReactJS da ci niezły opis tego, co poszło nie tak. W trybie produkcji generuje ogólny błąd informujący o użyciu wersji dev.
Możemy to wykorzystać, aby zbudować funkcję, która określa, czy React jest w trybie dev:
function isDevReact() {
try {
React.createClass({});
} catch(e) {
if (e.message.indexOf('render') >= 0) {
return true; // A nice, specific error message
} else {
return false; // A generic error message
}
}
return false; // should never happen, but play it safe.
};
To działa, ponieważ wyjątek za niewdrożenie metodę render
różni się w dwóch trybach:
Development: "Invariant Violation: createClass(...): Class specification must implement a `render` method. Inline JSX script:16"
Production: "Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings. Inline JSX script:16"
Słowo "render" jest charakterystyczne dla niezmiennika, który naruszono, więc pojawia się tylko w wyjątku wersji deweloperskiej.
Możesz ustawić zmienną '__DEV__' za pomocą pakietu internetowego. –
Jeśli piszesz Mixin, prawdopodobnie nie chcesz zmusić użytkowników do samodzielnego odbudowania ReactJS. – danvk