render
我在 TypeScript 中有一个 React HOC,但是当我从 TSX 组件方法中调用它时,它似乎不起作用。这是一个例子:
export class HelloWorldComponent extends React.Component<{}, {}> {
public render(): JSX.Element {
return <div>Hello, world!</div>;
}
}
export const withRedText = (Component) => {
return class WithRedComponent extends React.Component<{}, {}> {
public render(): JSX.Element {
return (
<div style={{color: "red"}}>
<Component {...this.props} />
</div>
);
}
};
};
export const HelloWorldComponentWithRedText = withRedText(HelloWorldComponent);
我从这样的父 JSX 文件中调用它:
public render(): JSX.Element {
return (
<div>
Test #1: <HelloWorldComponent/>
Test #2: <HelloWorldComponentWithRedText />
Test #3: { withRedText(<HelloWorldComponent />) }
</div>
)
}
第一个和第二个测试按预期工作——第二个测试中的文本是红色的。但是第三行什么也不渲染。我预计第二行和第三行是相同的。
当我使用调试器单步执行它时,Test #2 的参数是 type 的 Component HelloWorldComponent
,但 Test #3 看到的是Component = Object {$$typeof: Symbol(react.element), ...}
.
有没有办法使用{ withRedText(<HelloWorldComponent />) }
JSX/TSX 文件中的语法动态包装组件?
(TypeScript 2.1.4 & React 15.4.0)