我正在使用react-redux和typescript但是我在连接方法中遇到错误。
[at-loader]中的错误./src/components/BodyCmp.tsx:43:73 TS2345:类型'(dispatch:any)=>的参数()=>作用>”不能分配给'MapDispatchToPropsParam'类型的参数。 输入'(dispatch:any)=> ()=>作用>”不能分配给'MapDispatchToPropsFactory'类型。 输入'()=>作用>”不能分配给'MapDispatchToProps'类型。 输入'()=>作用>”不能分配给'MapDispatchToPropsFunction'类型。 输入“操作>”不能分配给'DispatchProps'类型。 “Action>”类型中缺少属性“fetchData”。
[at-loader]中的错误./src/index.tsx:18:17 TS2322:类型'{}'不能分配给'IntrinsicAttributes& IntrinsicClassAttributes& Readonly< {children?:ReactNode; }> &安培; [R ...'。 类型“{}”不能分配给“Readonly”类型。 “{}”类型中缺少属性“数据”。 webpack:无法编译。
代码如下,提前致谢。
action.ts
---------------
export interface Action<T>{
type:string;
payload: T;
}
BodyCmp.tsx
------------------
import * as React from "react";
import { connect } from "react-redux";
import { bindActionCreators } from "redux";
import {fetchData} from "../Actions/userData";
import {store} from "../store/store";
import {Action} from "../models/action";
interface StateProps {
data:Array<{}>;
}
interface DispatchProps {
fetchData():Action<Promise<any>>;
}
type bodyProps = StateProps & DispatchProps;
function mapStateToProps(state:any):StateProps{
return {
data:state.dataReducer.data
};
}
function mapDispatchToProps(dispatch:any){
return bindActionCreators(fetchData, dispatch)
}
export class BodyCmp extends React.Component<bodyProps,any>{
componentDidMount() {
this.props.fetchData();
}
render(){
console.log(this.props);
return(
<div>
<h1>Bodyyyy</h1>
</div>
)
}
}
export default connect<StateProps, DispatchProps, any>(mapStateToProps, mapDispatchToProps)(BodyCmp);