Возникла проблема с созданием аккордеонного компонента.у меня есть свернутое состояние, которое передается как className, если состояние истинно, к тегу div.В CSS, что должно произойти, это то, что если свернутое className является истинным показывать контент, но происходит то, что когда кнопка (которая изменяет состояние) нажата, div получает «свернутый» className, но в css он не использует$ .collapsed вложенные правила.Любая помощь приветствуется.Не очень хорошо с css.
ErrorNotification.js
import React, { Component } from 'react'
import { Typography, Button } from 'rmwc'
import { Icon } from 'rmwc/Icon'
import cn from 'classnames/bind'
import styles from './index.css'
const cx = cn.bind(styles)
export class ErrorNotification extends Component {
state = {
collapsed: true,
}
toggleAccordion = () => this.setState({ collapsed:
!this.state.collapsed
})
buttonIcon = 'keyboard_arrow_down'
render() {
console.log('collapsed', this.state.collapsed)
return (
<div className={cx('error-notification-container')}>
<Typography className={cx('error-notification-message')}>There
was an error in retrieving the configuration data.</Typography>
<div className={cx('accordion-container', { collapsed:
this.state.collapsed })}>
<div className={cx('accordion-top-section')}>
<Button className={cx('accordion-button')} onClick=
{this.toggleAccordion}>
<Icon strategy="ligature">{this.buttonIcon}</Icon>
</Button>
</div>
<div className={cx('accordion-panel')}>
<Typography>
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore
magna aliqua.
</Typography>
</div>
</div>
</div>
)
}
}
ErrorNotification.css
.error-notification {
font-weight: bold;
border-left: 10px solid #9a2c30;
background-color: #cb454b;
color: #ffffff;
& .error-notification-message {
margin: 0px;
}
& .accordion-container {
padding: 10px;
& .accordion-top-section {
display: flex;
justify-content: center;
width: 100%;
& .accordion-button {
width: 100%;
}
}
& .accordion-panel {
max-height: 0;
overflow: hidden;
transition: max-height 0.2s ease-in;
}
& .collapsed {
& .accordion-panel {
max-height: 100px;
overflow: hidden;
transition: max-height 0.2s ease-out;
}
}
}
}