У меня есть этот компонент, который может отображаться разными цветами в зависимости от цвета реквизита, полученного этим компонентом.
const Card = ({color}) => {
return (
<p style = {{color}}>Some Text</p>
)
}
У меня есть эти глобальные переменные css:
:root{
--bg-clr-1: #E7F8F8;
--card-clr-red: #F03E3E;
--card-clr-violet: #7950F2;
--card-clr-green: #12B886;
--text-clr: #333;
}
Есть ли способ передать эту переменную css в качестве реквизита для компонента «Карта»? Вот так:
import variableStyles from '../../styles/globalVariables.css'
const App = () => {
return(
<Card color = {variableStyles['--text-clr']} />
)
}
🤔 А знаете ли вы, что...
CSS Flexbox позволяет легко выравнивать элементы вдоль оси контейнера.
Вы можете передать строку переменной в качестве реквизита и ввести ее в var()
:
<p style = {{ color: `var(${color})` }}>Some Text</p>
const Card = ({color}) => {
return (
<p style = {{ color: `var(${color})` }}>Some Text</p>
)
}
class Example extends React.Component {
render() {
return (
<React.Fragment>
<Card color = {'--card-clr-red'} />
<Card color = {'--card-clr-violet'} />
</React.Fragment>
);
}
}
ReactDOM.render(<Example />, document.body);
:root{
--bg-clr-1: #E7F8F8;
--card-clr-red: #F03E3E;
--card-clr-violet: #7950F2;
--card-clr-green: #12B886;
--text-clr: #333;
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>