Пожалуйста, смотрите эту страницу: https://farmacia33.it
Это проект с React 16, Redux, SSR, Emotion CSS-in-JS, позволяющий пользователю изменять цвета через admin и React Select 2.
В асинхронном компоненте выбора заголовка можно увидеть флэш-содержимое без стиля.
Вот код для этого компонента, заключающий в себе Асинхронность React Select:
import Async from 'react-select/lib/Async'
import { connect } from 'react-redux'
import { primary_s5_l90, primary_s20_l95, primary_s10_l75 } from '../../shared/lib/colors';
const getCustomStyles = primaryColor => ({
control: (provided, state) => ({
...provided,
borderWidth: 2,
borderStyle: 'solid',
borderColor: state.isFocused ? primary_s10_l75(primaryColor) : primary_s5_l90(primaryColor),
borderRadius: '2em',
boxShadow: 'none',
height: 50,
'&:hover': {
borderColor: primary_s10_l75(primaryColor),
},
borderBottomLeftRadius: state.menuIsOpen ? 0 : '2em',
borderBottomRightRadius: state.menuIsOpen ? 0 : '2em',
borderBottom: state.menuIsOpen ? 'none' : provided.border,
}),
valueContainer: (provided, state) => ({
...provided,
padding: '7px 10px 7px 25px'
}),
menu: (provided, state) => ({
...provided,
marginTop: 0,
border: `2px solid ${primary_s10_l75(primaryColor)}`,
borderRadius: '2em',
borderTopLeftRadius: 0,
borderTopRightRadius: 0,
borderTop: 0,
boxShadow: 'none',
overflow: 'hidden'
}),
option: (provided, state) => ({
...provided,
backgroundColor: (state.isSelected || state.isFocused) ? primary_s20_l95(primaryColor) : provided.backgroundColor
}),
indicatorsContainer: (provided, state) => ({
...provided,
paddingRight: 15,
color: primary_s10_l75(primaryColor),
fontSize: 15
}),
indicatorSeparator: () => ({
display: 'none'
})
})
const AsyncSelect = props => (
<Async styles={getCustomStyles(props.primaryColor)} {...props}></Async>
)
const mapStateToProps = state => ({
primaryColor: state.store.data.loghiTemplate.brandColor,
})
export default connect(mapStateToProps)(AsyncSelect)
подпрограммы primaryColor из Redux не должны изменяться, поскольку они повторно перетаскиваются в initialState сервером в переменную окна.
Я не могу понять FOUC.Более того, иногда он не создает необходимый тег styles
и визуализирует без какого-либо стиля!
Есть идеи?
Спасибо, Маттео Франа