2
我有一个父组件,它包含许多子组件。我想在点击时将一个active
className添加到子组件。反应 - 在任何时候只有一个“活动”子组件
这是行得通的,但问题是每个子组件都可以有一个active
classname。每次只有一个组件应该是active
。
有没有人有任何想法如何解决这个问题?
请参阅下面的代码。
class MyComponent extends Component {
constructor(props) {
super(props);
this.addActiveClass= this.addActiveClass.bind(this);
this.state = {
active: false,
};
}
addActiveClass() {
const currentState = this.state.active;
this.setState({ active: !currentState });
};
render() {
return (
<div
className={this.state.active ? 'active': null}
onclick={this.addActiveClass}
>
<p>{this.props.text}</p>
</div>
)
}
}
class Test extends Component {
render() {
return (
<div>
<MyComponent text={'1'} />
<MyComponent text={'2'} />
<MyComponent text={'3'} />
<MyComponent text={'4'} />
</div>
);
}
}
你会怎么做呢? –
我会在几分钟内提供一个例子。 :) –
@peterflanagan你可以检查这个例子。 –