Die ReactJS-Quelle verwendet eine Variable namens __DEV__
, um dies zu verfolgen, aber sie wird nicht exportiert, daher ist sie für Ihren Mixin nicht verfügbar.
Seine Folgen sind jedoch. Wenn Sie beispielsweise eine Invariante aufbrechen, gibt Ihnen der Dev-Modus ReactJS eine schöne Beschreibung dessen, was schief gelaufen ist. Im Produktionsmodus wird ein generischer Fehler angezeigt, der Sie auffordert, die dev-Version zu verwenden.
Wir können diese verwenden, um eine Funktion zu bauen, wenn der Modus in dev Reaktion bestimmt:
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.
};
Das funktioniert, weil die Ausnahme für nicht render
Verfahren implementiert, in den beiden Modi unterschiedlich ist:
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"
Das Wort "render" ist spezifisch für die Invariante, gegen die wir verstoßen haben. Daher wird es nur in der Ausnahme der dev-Version angezeigt.
Sie können '__DEV__ 'Variable mit Webpack setzen .. –
Wenn Sie ein Mixin schreiben, möchten Sie wahrscheinlich Benutzer nicht zwingen, ReactJS selbst wieder aufzubauen. – danvk