Я только что обновил проект от 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"
}
}
Я столкнулся с подобной проблемой, когда я перешел на RN 56 и babel-preset-react-native-5.02, затем переключил babel-preset-response-native обратно в 5.0.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
.overrides is not allowed in preset options
он выбрасывает.overrides is not allowed in preset options