javascript - IE11 中 eval() 的 React + Babel polyfill 问题
问题描述
我正在使用 React 前端开发产品预订表单系统,我们必须支持 IE9+。我在(Babel、Promise、Fetch)中有所有标准的 polyfill,并且大多数东西都运行良好。这是问题的简短解释:
要显示的表单字段的信息通过 Fetch 请求以 JSON 格式异步拉入。
我们有一些表单字段有条件地显示,具体取决于其他字段的值。
条件规则与其他所有内容一起在 Fetch 请求中被下拉,以 ES6 箭头函数的形式返回是否显示字段的真/假 - 例如
(student) => student === 'yes'
每当它依赖于更新的字段时,我都使用 eval() 来运行此规则
这在现代浏览器中完美运行,但是我们引入的函数没有被 Babel 填充,所以在 IE 中 eval() 仍在尝试运行箭头函数并崩溃
这是处理这些规则的函数:
processRules() {
if (this.props.item.rules && this.props.item.rules.length > 0) {
const ruleset = this.props.item.rules;
for (let i = 0; i < ruleset.length; i++) {
let targetItem = this.props.fields.find((e) => e.name === ruleset[i].target);
if (targetItem.value) {
let rule = ruleset[i].condition;
let checkRule = eval(rule);
if (checkRule(targetItem.value) === true) return ruleset[i].action;
}
}
} else {
return 'show';
}
}
关于如何让这个函数填充回 ES5 语法的任何建议?我有 babel-plugin-transform-eval 但它不影响这个功能。
(旁注:我知道 eval 的所有问题。所有这些问题。我们已经非常仔细地考虑了 eval 的所有安全问题,并且很乐意使用它。)
解决方案
推荐阅读
- python-3.x - 将多进程程序的输出通过管道传输到多个文本文件中
- git - 如何显示从上游获取的内容?
- javascript - React:关于使用与框架无关的 util 函数操作 React 状态的问题
- label - TradingView label.new 打印多个柱的问题
- typescript - 如何用笑话模拟 dynamoDB 调用?
- html - 我怎样才能使这部分全屏高度?
- javascript - 如何将在 html 页面上编辑的内容保存到 Google 工作表
- angular - Angular CLI 命令中的 i 是什么:ng gi student?
- android - Diff util 未在回收站视图中更新项目 UI
- excel - 循环遍历一些工作表以压缩 vba 代码的有效方法是什么?