Я считаю, что ответ от MTCoster - лучший подход.в зависимости от структуры вашего приложения вы можете использовать новый Context API для создания своего рода провайдера тем, чтобы вы могли передавать пользовательские стили, которые могут храниться в состоянии вашего приложения и загружаться из вашего бэкэндаAPI.Есть несколько инструментов, которые могут помочь вам легче интегрировать эту функцию, например Styled-Components .
со стилевыми компонентами вы можете написать что-то вроде:
import styled from 'styled-components'
import { YourComponentJSX } from '../somewhere'
// Wrap the component where you need your custom styles
const YourStyledComponent = styled(YourComponentJSX)`
font-size: 1em;
margin: 1em;
padding: 0.25em 1em;
border-radius: 3px;
/* Color the border and text with theme.main */
// using the short-if to add a default color in case it is not connected to the ThemeProvider
color: ${props => props.theme.main ? props.theme.main : "palevioletred"};
border: 2px solid ${props => props.theme.main ? props.theme.main : "palevioletred"};
`;
// Define what props.theme will look like
const theme = {
main: "mediumseagreen"
};
render(
<div>
<ThemeProvider theme={theme}>
<App>
<YourStyledComponent>Themed</YourStyledComponent>
</App>
</ThemeProvider>
</div>
);
Таким образом, вы можете обернуть все свое приложение и использовать пользовательские стили, сохраненные в состоянии приложения, которые были загружены из серверной части и использоватьих на действительно глубоко вложенных компонентах пользовательского интерфейса
* Код является модификацией из документации по стилевым компонентам