компоненты babel-preset-реакции-native и высшего порядка

1

Я только что обновил проект от RN 53 до 56, что означает, что babel также обновлен с версии 6 до 7, что вызывает у меня проблему, о которой я действительно не могу понять.

Похоже, что классы, расширенные внутри функции, сохраняют только класс, который они распространяют, но не расширения. Тем не менее, новый конструктор работает.

Проблема швов вызвана [email protected]

Чтобы воспроизвести проблему, я попытался создать небольшой пример, в котором я создаю и возвращаю класс внутри функции

class A {
  a() {
    return 'a';
  }
}

const createB = () => {
  class B extends A {
    constructor() {
      super();
      this.c = 'c';
    }

    b() {
      return 'b';
    }
  }

  return B;
}

const CB = createB();

console.log('a: ', typeof new CB().a);
console.log('b: ', typeof new CB().b);
console.log('c: ', typeof new CB().c);

Если я запустил это как yarn babel-node --presets=react-native index.js new CB().b никогда не определяется

a:  function
b:  undefined
c:  string

Если я вместо этого запускаю его без предустановки или @babel/preset-env он ведет себя так, как я ожидаю.

a:  function
b:  function
c:  string

Любой, у кого есть подобные проблемы? Я могу решить это, загрузив react-native а затем @babel/preset-env, но это вызывает некоторые другие проблемы из модулей, которые используют свойства класса, а это значит, что мне нужно @babel/preset-env до react-native

package.json

{
  "name": "err",
  "version": "1.0.0",
  "devDependencies": {
    "@babel/cli": "^7.0.0-beta.55",
    "@babel/core": "^7.0.0-beta.55",
    "@babel/node": "^7.0.0-beta.55",
    "@babel/preset-env": "^7.0.0-beta.55",
    "babel-preset-react-native": "^5.0.2"
  }
}
  • 0
    Похоже, что он работает при использовании предустановленной yarn babel-node --presets=metro-react-native-babel-preset/src/index.js index.js метрополитена yarn babel-node --presets=metro-react-native-babel-preset/src/index.js index.js
  • 1
    За исключением случаев, когда он действительно работает в .overrides is not allowed in preset options он выбрасывает .overrides is not allowed in preset options
Теги:
react-native
babeljs

1 ответ

0

Я столкнулся с подобной проблемой, когда я перешел на RN 56 и babel-preset-react-native-5.02, затем переключил babel-preset-response-native обратно в 5.0.0, все работает нормально.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню