У меня есть один компонент без сохранения состояния, подобный этому:
import React from 'react';
import PropTypes from 'prop-types';
const Panel = (props) => {
return(
<div
className={props.className}
onClick={props.onClick}>
<p>{props.firstChild}</p>
<p>{props.secondChild}</p>
<p>{props.thirdChild}</p>
</div>
)
}
Panel.propTypes = {
onClick: PropTypes.func.isRequired,
className:PropTypes.any.isRequired,
firstChild: PropTypes.string.isRequired,
secondChild: PropTypes.string.isRequired,
thirdChild: PropTypes.string.isRequired,
};
export default Panel
И у меня есть мой компонент Class, подобный этому:
import React, { Component } from 'react';
import Panel from './panel'
class ImageGallery extends Component {
constructor(props){
super(props)
this.state = {
open: false,
}
}
toggleOpen = () => {
console.log('hi')
this.setState({
open: !this.state.open
})
}
render() {
return (
<div className="panels">
<Panel
firstChild="Hey"
secondChild="Let's"
thirdChild="Talk"
onClick={this.toggleOpen}
className={this.state.open ? "panel panel1 open open-active " : "panel panel1"}
/>
<Panel
firstChild="Hey"
secondChild="Give"
thirdChild="Me"
onClick={this.toggleOpen}
className={this.state.open ? "panel panel2 open open-active " : "panel panel2"}
/>
</div>
)
};
}
export default ImageGallery;
onClick на один Panel
компонент, который хочет этотдобавляет классы open
и open-active
к моему предмету.На данный момент onClock для одного элемента открываются, но я хочу, чтобы оба обрабатывались отдельно.
Я не уверен, как сделать это самым чистым способом, используя состояние и классы.
Спасибоза вашу помощь