首页 > 解决方案 > IE11 中 eval() 的 React + Babel polyfill 问题

问题描述

我正在使用 React 前端开发产品预订表单系统,我们必须支持 IE9+。我在(Babel、Promise、Fetch)中有所有标准的 polyfill,并且大多数东西都运行良好。这是问题的简短解释:

这是处理这些规则的函数:

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 的所有安全问题,并且很乐意使用它。)

标签: javascriptreactjsecmascript-6babeljspolyfills

解决方案


推荐阅读