#html #css #reactjs
Вопрос:
У меня есть ниже CSS и разметка в ReactJS, и я хочу динамически обновлять свойство фона. Допустим, для немногих случаев он должен быть красным, а для немногих-черным.
goodOne: {
position: 'relative',
'amp;:before': {
position: 'absolute',
background: 'This value needs to be filled dynamically',
borderRadius: '50%'
}
}
<div className = {classes.goodOne}>Hello world</div>
Как я могу это сделать?
Комментарии:
1. Как насчет styled-components.com ?. Вы ищете только классы CSS
Ответ №1:
import React from 'react'
import {createUseStyles} from 'react-jss'
const useStyles = createUseStyles({
myButton: {
padding: props => props.spacing
},
myLabel: props => ({
display: 'block',
color: props.labelColor,
fontWeight: props.fontWeight,
fontStyle: props.fontStyle
})
})
const Button = ({children, ...props}) => {
const classes = useStyles(props)
return (
<button className={classes.myButton}>
<span className={classes.myLabel}>{children}</span>
</button>
)
}
Button.defaultProps = {
spacing: 10,
fontWeight: 'bold',
labelColor: 'red'
}
const App = () => <Button fontStyle="italic">Submit</Button>
import React from 'react';
import { ThemeProvider, createUseStyles } from 'react-jss';
const useStyles = createUseStyles((theme) => ({
background: {
color: theme.color,
background: ({ background }) => background,
width: 300,
height: 300
}
}));
function MyComponent() {
const [background, setBackground] = React.useState('black');
const classes = useStyles({
background: background
});
return (
<React.Fragment>
<div className={classes.background}>Hello, world</div>
<button onClick={() => setBackground('red')}>Change to red</button>
<button onClick={() => setBackground('black')}>Change to black</button>
</React.Fragment>
);
}
function App() {
const theme = {
color: 'green'
};
return (
<ThemeProvider theme={theme}>
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
</div>
<MyComponent />
</ThemeProvider>
);
}
Комментарии:
1. Спасибо, что поделились этим, не могли бы вы, пожалуйста, поделиться со мной рабочим примером. Я попытался запустить этот фрагмент кода для получения ошибки.
2. @Лара, codesandbox.io/s/interesting-sea-ig24d (также я обновил ответ)