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的主要内容,如果未能解决你的问题,请参考以下文章
Uncaught TypeError: Super expression must be null or a function, not undefined (React.js, Flux, ES6)
vue-test-utils 设置获取 TypeError:无法在字符串上创建属性“_Ctor”
TypeError: (0 , _utils.isExternal) is not a function
@vue/test-utils 中的 mount() 和 shallowMount() 抛出 TypeError: Cannot read property 'components' of undef