我为ReactJS写了Mixin。我希望它能够进行一些验证,但只有在development mode中使用ReactJS时才会这样做。
如何从JavaScript确定ReactJS是处于开发模式还是生产模式?
答案 0 :(得分:11)
ReactJS源使用一个名为__DEV__
的变量来跟踪它,但它没有被导出,所以它对你的Mixin不可用。
我们可以使用它来构建一个确定React是否处于开发模式的函数:
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.
};
这是有效的,因为在两种模式下,不实现render
方法的例外是不同的:
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"
单词“render”特定于我们违反的不变量,因此它只显示在dev版本的异常中。