Проблема с полифилом React + Babel для eval () в IE11

Я работаю над системой форм бронирования продуктов с интерфейсом в React, и мы должны поддерживать IE9 +. У меня есть все стандартные полифиллы (Babel, Promise, Fetch), и большинство вещей работает нормально. Вот краткое объяснение проблемы:

  • Информация о том, какие поля формы следует отображать, извлекается асинхронно с помощью запроса Fetch в формате JSON.

  • У нас есть некоторые поля формы, которые отображаются условно, в зависимости от значений других полей.

  • Правила условия извлекаются в запросе Fetch вместе со всем остальным в форме стрелочной функции ES6, которая возвращает true / false для отображения поля - так, например, (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 и в любом случае рады его использовать.)

Может ли ваш бэкэнд не возвращать традиционное выражение function?

Pointy 20.12.2018 15:37

@Pointy Я могу посмотреть, как это изменить, если это абсолютно необходимо, но это потребует переписывания всех функций, которые уже есть, и я не тот, кто их пишет. Я могу это сделать, если решения нет, но предпочел бы иметь возможность решать его во внешнем интерфейсе.

Karen Champ 20.12.2018 15:41

Вам нужно будет запустить эти стрелочные функции через babel или какой-либо другой синтаксический анализатор ES6, прежде чем вы попытаетесь оценить их в IE11. Тем не менее, исключение подобных функций - действительно плохая идея по разным причинам.

Håken Lid 20.12.2018 15:53

Должна быть возможность запускать клиентскую часть babel. babeljs.io/docs/en/next/babel-standalone.html

Håken Lid 20.12.2018 15:59

@ HåkenLid, это именно то, что мне нужно, спасибо !!

Karen Champ 20.12.2018 16:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
576
0

Другие вопросы по теме