Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 巴别塔预设反应本机和高阶组件_Javascript_React Native_Babeljs - Fatal编程技术网

Javascript 巴别塔预设反应本机和高阶组件

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

我刚刚将一个项目从RN 53更新到56,这意味着babel也从版本6更新到了版本7,这给我带来了一个我无法理解的问题

在函数中扩展的类似乎只保留它们扩展的类,而不保留扩展。新的构造函数似乎正在运行

问题可能是由巴别塔预设引起的-native@5.0.2

为了重现这个问题,我尝试生成一个小示例,在其中我在函数中创建并返回一个类

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中实际运行,然后它抛出
。预设选项中不允许覆盖