Я изучаю стороннюю реакцию с компонентом PostCss
в котором я вижу свойство isOpen
полученное извне
import React, { Component } from 'react';
import classNames from 'classnames/bind';
import PropTypes from 'prop-types';
import styles from './Modal.css';
class Modal extends Component {
render() {
const {
isOpen,
} = this.props;
const cx = classNames.bind(styles);
const ModalClassName = cx({
Modal: true,
isOpen: isOpen,
});
return (
<div className={ModalClassName} tabIndex={0}>
... modal content ...
</div>
)
}
}
Modal.propTypes = {
isOpen: PropTypes.bool.isRequired,
};
export default Modal;
в Modal.css я вижу стиль, чтобы скрыть этот модальный компонент
:local(.Modal) {
&:not(:local(.isOpen)) {
visibility: hidden;
opacity: 0;
}
}
/* ------------- I miss this one as well ------------- */
:local(.isOpen) {
@media print {
position: static !important;
}
}
Является ли эта isOpen
та же самая переменная в CSS, которая передается компоненту как свойство, или имя isOpen
просто совпадение? Если да, то почему isOpen
виден в CSS? Не могли бы вы дать мне ссылку, где я читал об этом.
После полезных разъяснений от @JAM позвольте мне перефразировать мой вопрос.
Как значение в модальном свойстве Modal.props.isOpen
может вызвать стиль CSS .isOpen
и повлиять на видимость модального компонента. Вопрос не в библиотеке имен классов.
:local(.Modal) {
&:not(:local(.isOpen)) {
visibility: hidden;
opacity: 0;
}
}