我正在使用 react 并且我有一个组件,它只需要渲染子项并根据条件为它们添加一个类。最好的方法是什么?
React - 向子组件添加类
IT技术
reactjs
2021-05-18 05:38:20
4个回答
一周前我想通了,这就是我想要的:
export default class ContainerComponent extends React.Component {
constructor(props) {
super(props);
this.modifyChildren = this.modifyChildren.bind(this);
}
modifyChildren(child) {
const className = classNames(
child.props.className,
{...otherClassses}
);
const props = {
className
};
return React.cloneElement(child, props);
}
render() {
return (<div>
{React.Children.map(this.props.children, child => this.modifyChildren(child))}
</div>);
}
}
为了简单起见:
const StyleInjector = ({ children }) => {
const StyledChildren = () =>
React.Children.map(children, child =>
React.cloneElement(child, {
className: `${child.props.className} ${PUT_YOUR_CLASS_HERE}`
})
);
return <StyledChildren />;
};
几周前,我有一个要在 React 中实现的狂欢场景,没什么特别的,只是简单地切换活动类。我遵循了这个方法,就像一个魅力,但让我知道这是一个很好的方法。
{
this.props.children.map((slide, index) => {
return React.cloneElement(slide, {
key: index,
className: (this.state.currentActiveIndex === index) ?'active' : ''
});
})
}
您可以将props传递给孩子,它可以选择要应用的类(或仅传递类名,但这更具语义):
<Parent contentVisible={true}>
<Child />
</Parent>
在您的孩子渲染中:
const classes = [];
if (props.contentVisible)
classes.push('visible');
<div className={classes.join(' ')} />