【发布时间】:2017-08-12 06:09:58
【问题描述】:
我有一个像这样的组件:
class Person extends React.Component {
render() {
const { language } = this.props;
return (
<div>
I speak {language}
</div>
);
}
}
还有一个像这样的高阶组件:
export default (BaseComponent) =>
class extends React.Component {
render() {
return <BaseComponent language="English" />;
}
}
我用过它们:
class PersonList extends Component {
render() {
const NewPerson = hoc(Person)
return <NewPerson />;
}
}
这很好,它输出了我想要的东西
I speak English
但是,如果我希望 PersonList 组件呈现从其父级传递的内容而不是导入的内容,如下所示:
render(
<PersonList>
<Person />
</PersonList>,
document.getElementById('app')
)
现在,
const NewPerson = hoc(Person)
抛出错误。
我知道我可以像这样修复 HOC
return <div>{React.cloneElement(BaseComponent, { language: "English" })}</div>
但这是一个重大变化,我不想这样做。
我是否可以在不破坏我的 HOC 的情况下归档我的目标(HOC 组件呈现传递而不是导入的内容)?
或者有什么解决办法?
【问题讨论】:
标签: reactjs higher-order-components