Flux Utils TypeError:没有'new'就不能调用类构造函数App

Posted

技术标签:

【中文标题】Flux Utils TypeError:没有\'new\'就不能调用类构造函数App【英文标题】:Flux Utils TypeError: Class constructor App cannot be invoked without 'new'Flux Utils TypeError:没有'new'就不能调用类构造函数App 【发布时间】:2019-10-29 16:48:22 【问题描述】:

我正在尝试在以下 React 组件上实现 Flux Util 容器:

class App extends React.Component<,AppState> 
 constructor(props:Readonly<>)
    super(props);   
 
 static getStores()
    return [ArticlesStore];
 

 static calculateState(prevState:AppState):AppState
    return 
        articles:ArticlesStore.getState()
    
 
 render() 
    return (
        <main>
            <Navbar></Navbar>
            <Routes></Routes>
        </main>
    );
 



interface AppState
 /**
  * Articles retrived from the ArticlesState to be used in the rendering of the page
  */
 articles:ArticlesStoreState;


export default Container.create(App);

在实现创建容器所需的代码时,我遵循了 Flux 网站上提供的示例和 GitHub 上的一些其他代码作为参考。但是在运行这段代码时,我得到了以下错误:

`TypeError: Class constructor App cannot be invoked without 'new'.` 

(我正在使用打字稿)

有谁知道这个错误可能导致这个错误的原因是什么?提前致谢!

【问题讨论】:

我也有同样的问题。有什么解决方案吗? 没有再尝试找到修复程序,只是转移到 Redux。我建议你尽可能做同样的事情,或者使用 'useReducer()' 钩子,因为它们更容易实现 Flux Stores 我也面临同样的问题。有人解决了吗? 【参考方案1】:

我遇到了同样的问题,你可能会遇到这种情况,因为你想像我一样在 ES6 中运行 Flux。

如果是这样的话,那么根据this GitHub repo 中的问题,Flux Containers 仍然不支持 ES6。

在 cmets 中看到的可能(丑陋的)解决方法是执行以下操作:

/// FluxContainerConverter.js

module.exports = 
    convert: function(containerClass) 
        const tmp = containerClass;
        containerClass = function(...args) 
            return new tmp(...args);
        ;
        containerClass.prototype = tmp.prototype;
        containerClass.getStores = tmp.getStores;
        containerClass.calculateState = tmp.calculateState;
        return containerClass;
    
;

现在您可以使用它来创建您的 FluxContainer,如下所示:

var fluxContainerConverter = require('./FluxContainerConverter');

Container.create(
    fluxContainerConverter.convert(MyComponent));

【讨论】:

这里的模块是什么?

以上是关于Flux Utils TypeError:没有'new'就不能调用类构造函数App的主要内容,如果未能解决你的问题,请参考以下文章

Flux Utils 存储和异步定时器

Uncaught TypeError: Super expression must be null or a function, not undefined (React.js, Flux, ES6)

vue-test-utils 设置获取 TypeError:无法在字符串上创建属性“_Ctor”

TypeError:utils.endOfDay 不是函数

TypeError: (0 , _utils.isExternal) is not a function

@vue/test-utils 中的 mount() 和 shallowMount() 抛出 TypeError: Cannot read property 'components' of undef