项目技术栈是react + antd + ts
ts语法比较严格,第一次用在项目中,使用起来还是蛮不顺手的,遇到的问题基本都是语法检查的问题,现汇总下遇到的问题
1.[ts] Type '{ visible: boolean; handleCancel: (e: any) => void; }' has no properties in common with type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<RcBaseFormProps & Pick<any, never>, Comp...'
产生这个问题的原因是因为在子组件里使用了高级组件,在父组件的代码
//父组件
import { SpecialOrderDetail } from './SpecialOrder.detail'
<SpecialOrderDetail
visible={this.state.visible}
handleCancel={this.handleCancel}
/>
//子组件 SpecialOrder.detail.js
class Order extends React.Component<any, any>{
......
}
export const SpecialOrderDetail = Form.create()(Order);
问题就出在子组件最后这行代码上面,因为被高阶组件包装了一层,在父组件里handleCancel并不是加到SpecialOrderDetail 上,而是Order上,导致了报错。
展示问题原因
解决办法:直接在子组件对外暴露的名字上加上:any就可以
export const SpecialOrderDetail:any = Form.create()(Order);
网友评论