【发布时间】:2019-01-07 03:00:08
【问题描述】:
我正在尝试创建一个从 React 获取参数的装饰器。上下文提供者,如果我想创建 HOC 很容易:
interface DashboardProps {
user: User;
}
class Dashboard extends React.Component<DashboardProps> {
render() {
return (<span>{this.props.user.name}</span>);
}
}
function withUser(WrappedComponent) {
return class extends React.Component {
render() {
return (
<UserContext.Consumer>
{user => <WrappedComponent user={user} {...this.props}>}
</UserContext.Consumer>
);
}
}
}
export default withUser(Dashboard);
但我不知道如何像装饰者一样写:
@withUser
class Dashboard ...
【问题讨论】:
-
我不建议使用装饰器。根据handbook,TypeScript 将假定修饰类具有与原始类相同的成员,这对于典型的高阶组件而言并非如此。
-
@MattMcCutchen 那么如何在 mobx 中实现
withRoute' 或inject? -
我不知道那个。其他人可以随意插话。
标签: reactjs typescript high-order-component