Javascript 巴别塔预设反应本机和高阶组件
我刚刚将一个项目从RN 53更新到56,这意味着babel也从版本6更新到了版本7,这给我带来了一个我无法理解的问题 在函数中扩展的类似乎只保留它们扩展的类,而不保留扩展。新的构造函数似乎正在运行 问题可能是由巴别塔预设引起的-native@5.0.2 为了重现这个问题,我尝试生成一个小示例,在其中我在函数中创建并返回一个类Javascript 巴别塔预设反应本机和高阶组件,javascript,react-native,babeljs,Javascript,React Native,Babeljs,我刚刚将一个项目从RN 53更新到56,这意味着babel也从版本6更新到了版本7,这给我带来了一个我无法理解的问题 在函数中扩展的类似乎只保留它们扩展的类,而不保留扩展。新的构造函数似乎正在运行 问题可能是由巴别塔预设引起的-native@5.0.2 为了重现这个问题,我尝试生成一个小示例,在其中我在函数中创建并返回一个类 class A { a() { return 'a'; } } const createB = () => { class B extends
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);
如果我以warn babel节点的形式运行它——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
来解决这个问题,但是这会导致使用类属性的模块出现一些其他问题,这意味着我需要在react native
之前加载@babel/preset env
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 react native切换回5.0.0,一切正常。我在升级到RN 56和babel preset react native 5.02时遇到类似问题,然后我将babel preset react native切换回5.0.0,一切正常。当使用metro bundler preset
纱线巴贝尔节点时,它似乎工作正常——presets=metro react native babel preset/src/index.js index.js
除非在bundler中实际运行,然后它抛出。预设选项中不允许覆盖
当使用metro bundler preset时,它似乎工作正常warn babel节点--presets=metro react native babel preset/src/index.js index.js
除非在bundler中实际运行,然后它抛出。预设选项中不允许覆盖