最近,我正在尝试为我的应用程序完成一项功能。我需要使用布尔值来打开或关闭功能。
我尝试过:
.env.development
REACT_APP_IS_FEATURE_AVAILABLE = 0
.env.production
REACT_APP_IS_FEATURE_AVAILABLE = 1
features.js
const { REACT_APP_IS_FEATURE_AVAILABLE } = process.env
export default {
IS_FEATURE_AVAILABLE: REACT_APP_IS_FEATURE_AVAILABLE //
}
现在,当我这样做时,假设它处于“开发”模式:
index.js
import Features from "./features.js";
if(Features.IS_FEATURE_AVAILABLE) {
return (<div>Markup here!</div>)
};
但是,不管IS_FEATURE_AVAILABLE
的值是什么,if
总是在传递。
我确实想出了一个解决办法,它的工作原理很好。但是我仍然感到困惑,为什么这行不通。
针对此答案:https://stackoverflow.com/a/55720488/8349557,这是我尝试的方法:
答案 0 :(得分:3)
一个猜测,因为在我使用过的每个操作系统中,“环境变量”总是 strings ,实际上,您要做的就是
if("0")
并且由于任何非空字符串都是真实的,而true是真实的,因此结果为true
您可以通过
确认
console.log('!!"0" is', !!"0"); // true, therefore "0" is truthy
console.log('!!0 is', !!0); // false, therefore 0 is falsey
尝试
const { REACT_APP_IS_FEATURE_AVAILABLE } = process.env
export default {
IS_FEATURE_AVAILABLE: +REACT_APP_IS_FEATURE_AVAILABLE //
}
+
将值强制为数字
或者,使其变得清晰
const { REACT_APP_IS_FEATURE_AVAILABLE } = process.env
export default {
IS_FEATURE_AVAILABLE: "1" === REACT_APP_IS_FEATURE_AVAILABLE //
}
现在IS_FEATURE_AVAILABLE是布尔值