使用 withRouter 给组件添加路由属性和函数,感觉装饰器的语法更优雅,但是 ts 下 withRouter 装饰暴露组件会出现 ts 校验错误。代码如下:
import React, { Component } from 'react';
import { withRouter, RouteComponentProps } from 'react-router-dom';
type Props = {} & RouteComponentProps;
type State = {};
@withRouter
export default class Header extends Component<Props, State> {
render() {
console.log('Header 组件的 Props:', this.props);
return <h1>This is Header</h1>;
}
}
IDE 截图:
看编辑器提示,似乎是一个 issue ,让使用 withRouter()函数调用模式,感觉有点不死心,目前没有很好的解决方案了吗?
1
mxT52CRuqR6o5 2022-04-15 10:32:45 +08:00 via Android 1
不用就是了,ts 目前的装饰器实现也和 es 标准不一样,为啥非要用呢(像 angular 里的装饰器也是当注解用的,会在编译时做一些特殊处理)
|
2
Kei001 OP 原来 ts 里装饰器的标准不一样,了解了!
|
3
Charrlles 2022-04-15 23:34:57 +08:00 via iPhone
Decorator 的提案进 stage 3 了,估计 ts 很快就要跟进改掉,还是继续等等吧
|