Reactjs React Typescript组件:';新';其目标缺少构造签名的表达式隐式具有';任何';类型.ts(7009)
我有一个Reactjs React Typescript组件:';新';其目标缺少构造签名的表达式隐式具有';任何';类型.ts(7009),reactjs,typescript,Reactjs,Typescript,我有一个Test组件,它基于类并连接到redux,因此它可以随时了解应用程序状态 // ./components/test.tsx import { Component } from 'react' import { connect } from 'react-redux' import { AppState } from "../redux/store"; class Test extends Component { constructor(props: any) {
Test
组件,它基于类并连接到redux,因此它可以随时了解应用程序状态
// ./components/test.tsx
import { Component } from 'react'
import { connect } from 'react-redux'
import { AppState } from "../redux/store";
class Test extends Component {
constructor(props: any) {
super(props);
}
render() {
return null
}
}
const mapStateToProps = (state: AppState) => ({
getVal: state.chat
});
export default connect(mapStateToProps)(Test);
我希望能够创建此基于类的组件的许多实例Test
。我有一个按钮,它应该在每次单击Test
类时创建该类的新实例,请注意,我并没有将该组件添加到DOM中,这是有意的。此外,我正在从功能组件中创建基于类的组件,如果这会有所不同,则可能会进行更改
import React from "react";
import Test from "./components/test";
const App: React.FC = () => {
const makeNewTest = () => {
const newTest1 = new Test('im new');
// ^ error
const newTest2 = new Test('im new too');
// ^ error
};
return (
<div>
<button onClick={makeNewTest}>Make new tests</button>
</div>
);
};
export { App };
从“React”导入React;
从“/components/Test”导入测试;
常量应用程序:React.FC=()=>{
const makeNewTest=()=>{
常数newTest1=新测试(“im新”);
//^错误
const newTest2=新测试(“我也是新的”);
//^错误
};
返回(
进行新的测试
);
};
导出{App};
我得到的错误是“new”表达式,其目标缺少构造签名,隐式地具有“any”类型。ts(7009)
我想做什么?
应用程序向用户提供了许多“操作”供选择,一旦添加了一个操作,就可以对其进行配置并连接到另一个操作。一个操作的配置将影响与其连接的其他操作
一个“动作”的例子可以是定时器,用户选择定时器动作来添加它,然后他们可以配置定时器每4秒重复一次。
连接到此计时器的任何其他“操作”都需要知道4秒何时结束。
作为连接到计时器的组件的一个示例,我们可以有一个名为fetch的“操作”,fetch操作可以配置为从API获取数据,并且可以连接到计时器操作。每次计时器在4秒后触发时,fetch操作都会从API获取数据
因此,我的计划是为计时器和获取操作等创建一些类,当用户添加它们时,我会将该类保存到redux中的数组中,该数组将表示用户添加的所有类。当用户想要配置该类时,Id会在数组中找到该类并对其进行更新
当计时器达到4秒时,提取需要转到api。我上面的示例显示了许多正在生成的类,每个类都试图从redux获取状态作为简单的概念证明。这是因为
connect
返回函数,而不是类。。整个设置看起来有点奇怪,为什么测试
扩展组件
?你想实现什么?我希望类能够访问redux状态,这样当应用程序状态改变时,类可以对改变做出反应,我希望能够创建具有此功能的多个类。此链接显示了一个连接到redux的基于类的组件。我认为可以使用useffect
实现您想要做的事情,但我们不知道您想要做什么,因为您的问题只解释了您想要如何做。让我将此详细信息添加到问题中,谢谢你的指导