【发布时间】:2019-05-11 14:24:33
【问题描述】:
在我的应用程序中,我有几个表单域组件,它们的行为方式都相同,但看起来略有不同。我希望能够使用单个表单域组件的状态和类方法,同时提供某种替代渲染方法,以便我可以即时自定义此元素的外观。我知道我可以包装孩子,然后在组件中使用props.children。但我希望以某种方式重用组件方法:
class Parent extends React.Component {
render() {
<div className="parent">
<ChildFormField
renderAlternate={self => {
return (
<div className="child--alternate">
<input onChange={self.doThing} />
</div>
);
}}
/>
</div>
}
}
// And the child component look something like...
class ChildFormField extends React.Component {
state = {
value: null
}
doThing = value => {
return this.setState({ value });
}
render() {
if (this.props.renderAlternate !== undefined) {
return this.props.renderAlternate();
}
// standard return
return <div />;
}
}
除了基本用法之外,我对 React 还比较陌生。是否有推荐的方法来实现此功能?
【问题讨论】:
-
关注的分离是这里的问题,你将JSX从父母传递给孩子,这里渲染你的孩子取决于你父母的JSX
标签: javascript reactjs components