createStyleSheet
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдШрдЯрдХ рдХреЗ рдкреНрд░реЛрдк рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдкрддрд╛ рд╣реИ)ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрднреА-рдХрднреА рдпрд╣ рдЖрдХрд╛рд░, рдпреВрдЖрд░рдПрд▓ рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдЕрдиреНрдп рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рд░рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред
рдЖрдЬ рдЗрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рдЗрдирд▓рд╛рдЗрди-рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ v1 jss
рдФрд░ react-jss
, рдФрд░ рд╡реЗ рджреЛрдиреЛрдВ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╛рд╡рдирд╛ рджреЗрддреЗ рд╣реИрдВ рдкреНрд░реЛрдк рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЛрдк рддрдХ рдкрд╣реБрдВрдЪреЗрдВ рдФрд░ рдлрд┐рд░ рд╡рд╛рдВрдЫрд┐рдд рд╢реИрд▓реА рд▓реМрдЯрд╛рдПрдВ, рдЬреИрд╕реЗ:
const styles = {
button: {
background: props => props.color
},
root: {
backgroundImage: props => `url(${props.backgroundImage})`
}
}
// Reference: https://github.com/cssinjs/react-jss#example
рдЖрдк рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рдкрд░ рднреА рдРрд╕рд╛ рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЬреЗрдПрд╕рдПрд╕ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рд╣рдорд╛рд░реЗ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░реЗрд░рдгрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд░рд▓/рдмреЗрд╣рддрд░ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
React-jss injectStyles() рдпрд╣ рднреА рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ StyleRuleCallback
рдкреНрд░реЙрдкреНрд╕ рдЬреЛрдбрд╝рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред
const styles = (props, theme) => ({})
рдЗрд╕ рддрд░рд╣ рдЖрдк рд╕рд╣рд╛рд░рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЗрд╡рд▓ рдореВрд▓реНрдпреЛрдВ рддрдХ рд╣реА рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред
@Shamplol рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗ рдмрдЬрд╛рдп рд╣рдорд╛рд░реЗ рдШрдЯрдХреЛрдВ рдХреЛ рдПрдХ рдХрд╕реНрдЯрдо color
рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХреЗрдВред CSS рдЖрдХрд╛рд░ рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдШрдЯрдХ рд░рдВрдЧ рдХреЛ рдФрд░ рднреА рд╕рд░рд▓ рдмрдирд╛ рджреЗрдЧрд╛ред рдпрд╣ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдмрд╛рдд рд╣реИред рдлрд┐рд░, рдПрдХ рдмрд╛рд░ css рд╡реЗрд░рд┐рдПрдмрд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рдиреЗ рдкрд░ (рдЕрдм рд╕реЗ 2 рд╡рд░реНрд╖?), рд╣рдо рдЗрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@oliviertassinari рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рдЖрдХрд╛рд░ рдХрдо рдирд╣реАрдВ рд╣реЛрдЧрд╛?
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ, рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ ...Primary
рдФрд░ ...Accent
рд▓рд┐рдП рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рдХреНрдпрд╛ рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдореЗрдВ рдХреЗрд╡рд▓ ...Colorized
рд▓рд┐рдП рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдП рд░рдЦрдиреА рд╣реЛрдВрдЧреА? рдпрд╛ рдЖрдк рдЙрддреНрдкрдиреНрди рд╕реАрдПрд╕рдПрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рд╣реИрдВ?
рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбреАрдПрдХреНрд╕ рдореЗрдВ рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд╡рд░реНрдЧреЛрдВ рдЬреИрд╕реЗ https://github.com/callemall/material-ui/blob/v1-beta/src/Button/Button.js#L11 рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рд╣рдо рдЧреИрд░ рдкреИрд▓реЗрдЯ рд░рдВрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рдЖрдХрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдо рдирд╣реАрдВ рд╣реЛрдЧрд╛?
@ рд╕рдХреБрд▓рд╕реНрдЯреНрд░рд╛ рдмрддрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдпрд╣ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ред рд╢рд╛рдпрдж :)ред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдирдЬрд░рд┐рдП рд╕реЗ, рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ _both_ props
рдФрд░ theme
рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рднреАрддрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
const styles = {
button: {
background: ({ theme }) => theme.palette.primary[200]
},
root: {
backgroundImage: ({ props }) => `url(${props.backgroundImage})`
}
};
рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдХреНрд╕рд░ withStyles
рд▓рд┐рдП рд╕рд╣реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдХрд╛рд░ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдкреНрд░рджрд╛рди рдХрд░рдиреА рд╣реЛрдВрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
withStyles<'button' | 'root'>(theme => ...)
рдпрджрд┐ рдкреНрд░реЙрдкреНрд╕ рдХреЛ рднреА рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрди рдЬрд╛рдПрдЧрд╛
withStyles<'button' | 'root', Props>((theme, props) => ...)
рдЗрд╕рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ? рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╣реЛрдирд╛ рд╡рд╛рдХрдИ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛
@lucasmafra рдореИрдВрдиреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкреЛрд╕реНрдЯ v1 рд░рд┐рд▓реАрдЬрд╝ рдорд╛рдЗрд▓рд╕реНрдЯреЛрди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИред рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣рдо v1 рдЬрд╛рд░реА рдХрд░ рд╕рдХреЗрдВ, рдЙрддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред
рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рд╢реИрд▓реА рдирд┐рдпрдореЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬреЛ рдкреНрд░реЙрдкреНрд╕, рдореАрдбрд┐рдпрд╛ рдХреНрд╡реЗрд░реАрдЬрд╝ рдФрд░ рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рд╡ рд╕реНрдЯреЗрдЯреНрд╕ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИред рдЖрдк рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓рд┐рдпреЛрдВ рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, withStyles
рдореЗрд░реА рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рддрдм рддрдХ рдЕрдиреБрдкрдпреЛрдЧреА рд╣реИ рдЬрдм рддрдХ рдЗрд╕реЗ рдЬреЛрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ред
рдЖрдк рд╣рдореЗрд╢рд╛ рдПрдХ рдХрд╕реНрдЯрдо рдереАрдо рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рдХрдиреНрд╡реЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рд╕реНрдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдШрдЯрдХ рдЖрдкрдХреЛ MuiThemeProvider рдХреЗ рдЕрдВрджрд░ рдереАрдордкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреЛ рдиреЗрд╕реНрдЯ рдХрд░рдХреЗ рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рдкреНрд░реЙрдкреНрд╕.рдереАрдо рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рджреЛрдиреЛрдВ рдХреЛ рдереАрдо = {рдереАрдо} рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЙрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдереАрдо рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореБрдИ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ
//inline with HOC Method
h1 style= {{ 'color: this.props.theme.palette.primary[500]' }}
//styled components ( no method necessary )
const Heading = styled.h1`
color: ${p => p.theme.palette.primary['500']};
`
рдореБрдЭреЗ рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЬреЗрдПрд╕рдПрд╕ ' injectSheet()
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдореБрдИ рдХреЗ withStyles()
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рдмрдЬрд╛рдп рдЗрдВрдЬреЗрдХреНрд╢рдирд╢реАрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреЛрдИ рдХрдореА рд╣реИ?
@ рдбреЗрдорд┐рдпрди-рдореЛрдиреНрдиреА рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдордпреВрдЖрдИ рдереАрдо рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред
рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рдореИрдВ рдХреЗрд╡рд▓ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рд╢реИрд▓реА-рдШрдЯрдХреЛрдВ-рдЬреИрд╕реЗ рдПрдкреАрдЖрдИ рдХреЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдпрд╣ "рднрд╛рд░реА" рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
props
рдФрд░ theme
рдлрд╣рд░рд╛рдпрд╛редprops
рдХрд░рдирд╛React.forwardRef
рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдЧреНрд░реЗрд╖рдг рд░реЗрдлрд░реАfunction
рдпрд╛ object
рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЗ: #10825, #7633
рд╕реНрдЯрд╛рдЗрд▓.рдЬреЗрдПрд╕
import React, { Component } from 'react';
import classNames from 'classnames';
import PropTypes from 'prop-types';
import { withStyles } from 'material-ui/styles';
function styled(WrappedComponent, customProps) {
return (style, options) => {
class StyledComponent extends Component {
render() {
let {
forwardRef,
classes,
className,
...passThroughProps
} = this.props;
return (
<WrappedComponent
ref={forwardRef}
className={classNames(classes.root, className)}
{...passThroughProps}
{...customProps}
/>
);
}
}
StyledComponent.propTypes = {
classes: PropTypes.object.isRequired,
className: PropTypes.string,
};
let hoistedProps = {};
const styles =
typeof style === 'function'
? theme => {
return { root: style({ ...theme, theme, props: hoistedProps }) };
}
: { root: style };
const WithRef = withStyles(styles, options)(StyledComponent);
return React.forwardRef((props, ref) => {
hoistedProps = props;
return <WithRef {...props} forwardRef={ref} />;
});
};
}
export default styled;
рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧ
const MobileNav = styled('nav')(({ theme, props }) => ({
'&.pos-fixed': {
top: 0,
position: props.fixed ? 'fixed' : 'absolute',
zIndex: 99,
animation: 'fadeInDown 0.3s ease-out forwards',
backgroundColor: theme.palette.common.white,
},
}));
рдХрд╕реНрдЯрдо рд╕рд╣рд╛рд░рд╛ рдХреЗ рд╕рд╛рде
const StyledButton = styled(Button, { component: Link })(
({ theme, props }) => ({
color: props.disabled ? 'gray' : 'blue',
[theme.breakpoints.down('sm')]: {
color: 'red',
},
})
);
@oliviertassinari рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
componentWillMount() {
const {color} = this.props;
jss.setup(jssPreset());
const stylesheet = jss.createStyleSheet({
underline: {
"&:after": {
backgroundColor: `${color} !important`
}
}
}).attach();
this.underlineClass = stylesheet.classes.underline;
}
рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХреБрдЫ рд╕рдВрднрд╛рд╡рд┐рдд рдореБрджреНрджреЗ рд╣реИрдВ рдЬреЛ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ? рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рджреЛ рдмрд╛рд░ jss.setup рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ЁЯШЕред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ jss
рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рдореБрдЭреЗ рдпрд╣рд╛рдВ setup()
рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХреБрдЫ рд╕рдВрднрд╛рд╡рд┐рдд рдореБрджреНрджреЗ рд╣реИрдВ рдЬреЛ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ?
@wcandillon рдХреБрдЫ рд╕рдВрднрд╛рд╡рд┐рдд рдореБрджреНрджреЗ рдЬреЛ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ: 1. рдЖрдк рд╣рд░ рдмрд╛рд░ рдирдП рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗ рдЬрдм рдШрдЯрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЖрд░реЛрд╣рд┐рдд рд╣реЛред 2. рдЖрдк рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЛ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред 3. рдЖрдкрдХреЛ рд╕рд╣реА CSS рдУрд╡рд░рд░рд╛рдЗрдб рдЗрдВрдЬреЗрдХреНрд╢рди рдСрд░реНрдбрд░ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред
рдореИрдВрдиреЗ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╢реИрд▓реА рдХреЗ рд╕рд╛рде рд╕рд╣рд╛рд░рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИ:
https://github.com/JacquesBonet/jss-material-ui
рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдбреЗрдирд┐рдпрд▓рдорд╣реЛрди рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕реНрдЯрд╛рдЗрд▓ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВред
@oliviertassinari рдХреНрдпрд╛ рдЗрд╕ рд╕рдордп рдЧрддрд┐рд╢реАрд▓ рд╕реАрдПрд╕рдПрд╕/рдПрдиреАрдореЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реИрдХрд▓реНрдкрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ? рдзрдиреНрдпрд╡рд╛рдж :)
@HunderlineK рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк: https://material-ui.com/customization/overrides/#2 -dynamic-variation-for-a-one-time-situationред
@danielmahon рдЖрдкрдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рдЕрднреА рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ "рд╕реНрдЯрд╛рдЗрд▓ рдХрдВрдкреЛрдиреЗрдВрдЯ" рдирдП рдкреНрд░реЙрдкреНрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХреБрдЫ рдФрд░ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ?
рдореИрдВ рдХреБрдЫ рдЕрд▓рдЧ рд╕реЛрдЪреВрдВрдЧрд╛, рдФрд░ рдЕрдЧрд░ рдореИрдВ рдХреБрдЫ рд▓реЗрдХрд░ рдЖрддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛ рджреВрдВрдЧрд╛
ЁЯТ░ рдмрд╕ рдЙрд╕ рдкрд░ $50 рдХрд╛ рдЗрдирд╛рдо рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ :)
рдЬреИрд╕реЗ @lewisdiamond рдиреЗ рдХрд╣рд╛, const styles = (props, theme) => ({})
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдл-рд╕реБрдерд░рд╛ рд╣реЛрдЧрд╛ред
рдпрд╛ const styles = (theme, props) => ({})
рдиреЙрди-рдмреНрд░реЗрдХрд┐рдВрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ v1.x рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдореЗрдВ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВред рдХрд╛рдлреА рд▓реЛрдЧ рдЗрд╕рдХреА рдорд╛рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рдЬрд▓реНрдж рд╣реА рдЙрд╕ рддрдХ рдкрд╣реБрдВрдЪреЗрдВрдЧреЗред
@oliviertassinari рд╢рд╛рдпрдж withStyles
рдХреЗ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ, рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ
@pelotom рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЖрдкрдХреЛ
рдХреНрдпрд╛ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдХрд╛рд░реНрдп рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИ? рдпрд╣ рдЖрдИрдПрдордУ рдХреА рдПрдХ рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред styles
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреНрд░реЙрдкреНрд╕ рдкрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ withStyles
рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЛрдк рдмрджрд▓рддреЗ рд╕рдордп рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рдкрд░ рдкреАрдЖрд░ рдмрдирд╛рдПрдВрдЧреЗред
рдирдорд╕реНрддреЗ, рдореИрдВ рдЕрднреА рдПрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдпрд╛ рдерд╛ рдЬрд╣рд╛рдБ рдореБрдЭреЗ рдЕрд╡рддрд╛рд░ рдШрдЯрдХ рдХреЗ рд░рдВрдЧреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдШрдЯрдХ рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╢реИрд▓реА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
const styles = theme => ({
chip:{
},
separator: {
marginRight: theme.spacing.unit,
},
fright: {
float: 'right',
},
fleft: {
float: 'left',
},
outlinedPrimary:{
color: props => stringToColor( props.username),
border: props => `1px solid ${fade(stringToColor(props.username), 0.5)}`,
'$clickable&:hover, $clickable&:focus, $deletable&:focus': props => ({
backgroundColor: fade(stringToColor(props.username), theme.palette.action.hoverOpacity),
border: `1px solid ${stringToColor(props.username)}`,
}),
},
outlined: {
backgroundColor: 'transparent',
border: props => `1px solid ${
theme.palette.type === 'light' ? stringToColor(props.username) : fade(stringToColor(props.username))
}`,
'$clickable&:hover, $clickable&:focus, $deletable&:focus': props => ({
backgroundColor: fade(stringToColor(props.username), theme.palette.action.hoverOpacity),
}),
},
});
рдЖрдк рдореЗрд░реЗ рд╕рдорд╛рдзрд╛рди рдЬреИрдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/JacquesBonet/jss-material-ui
рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЗрд╕реЗ рджреЗрдЦ рд▓реВрдВрдЧрд╛ред
рдореБрдЭреЗ рдЖрдЬ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдПрдЪрдУрд╕реА рд▓рд┐рдЦрд╛ред withStyles
рдХреБрдЫ рдХреИрд╢рд┐рдВрдЧ рдЕрдкрдиреЗ рдЖрдк рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреЗ рдЦрд╛рд▓реА рд╕рдордп рдореЗрдВ withStyles
рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦреВрдВрдЧрд╛, рдЕрдм рдХреЛрдИ рднреА рдЦреЛрдЬ рд░рд╣рд╛ рд╣реИ рдкреНрд░реЙрдкреНрд╕ рдФрд░ рдереАрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рддреНрд╡рд░рд┐рдд рддрд░реАрдХрд╛ рдЕрдЪреНрдЫрд╛ рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╡рд╣рд╛рдВ рдЬрд╛рдПрдВ
рдпрд╣ рдШрдЯрдХ рдПрдХ рдкреВрд░реНрдг рд░рд┐рдорд╛рдЙрдВрдЯ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдкреНрд░реЙрдкреНрд╕ рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдХреНрд▓рд╛рд╕ рдХреЗ рдЗрдВрдбреЗрдХреНрд╕ рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмрджрд▓рддреЗ рд╣реИрдВ рдпрд╛ рд╕реНрдЯрд╛рдЗрд▓ рдПрдЪрдУрд╕реА рдореЗрдВ рдХреБрдЫ рдмрджрд▓рддреЗ рд╣реИрдВ
import React from 'react';
import { withStyles } from '@material-ui/core/styles';
const { createElement, forwardRef } = React
const withPropsStyles = ( style ) => {
const withPropsStyles = ( component ) => {
return forwardRef( (props, ref) => {
const proxy = (theme) => style(props, theme)
const hoc = withStyles(proxy)(component)
return props.children ?
createElement(hoc, { ...props, ref}, props.children) :
createElement(hoc, {...props, ref})
})
}
return withPropsStyles
}
export default withPropsStyles
const styles = (props, theme) => ({
root:{
backgroundColor: props.light ? theme.palette.primary.light : theme.palette.primary.main
},
})
const SomeComponent = ({classes}) => <div className={classes.root}/>
export default withPropsStyles(styles)(SomeComponent)
рд╕рд░рд▓ рдФрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдкреВрд░реА рд░реАрдорд╛рдЙрдВрдЯ рд▓рд╛рдЧрдд рднреА рд░рд┐рдо рдХрд░реЗрдВ)
рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ 100% JSS рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдореЗрд░рд╛ рдРрдк рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрдм рдореИрдВ рдЬреЗрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рд▓рд╣рд░ рдкреНрд░рднрд╛рд╡ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдпрд╛ рддреЛ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░рджрд░реНрд╢рди рд╣рд┐рдЯ рд╣реЛ, рд▓реЗрдХрд┐рди рдХреНрд▓реАрдирд░ рд▓рдЧрддрд╛ рд╣реИред
@koshea рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓реА рдХреЛ withStyles
рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореЗрдВ рдПрдХ рдмреВрдВрдж рдХреЗ рд░реВрдк рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВ рдпрд╣ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдордЬрдмреВрдд рд╕рд╛рдордЧреНрд░реА рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рдЗрд╕реЗ рд╕реНрдЯрд╛рдЗрд▓ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ unsafe-inline
рдзреНрд╡рдЬ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред
рдкреНрд░реЙрдкреНрд╕ рд╕рдкреЛрд░реНрдЯ рд╡рд╛рд▓реА рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реНрдЯрд╛рдЗрд▓ рдХреЛ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рдирдорд╕реНрддреЗ рджреЛрд╕реНрддреЛрдВ, "рдмрд╕ рдЗрд╕реА рддрд░рд╣" рдЪрд░реНрдЪрд╛ рдореЗрдВ рдХреВрджрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореБрдИ (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЬрдм рддрдХ рдореБрдЭреЗ рдпрд╣ рдПрдХ рдЕрддреНрдпрдВрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рдЧрддрд╛ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдЬрдЯрд┐рд▓рддрд╛рдПрдВ рд╣реИрдВред
рдореИрдВрдиреЗ рдКрдкрд░ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдмрд╛рдд рдкрд░ рдереЛрдбрд╝реА рдЪрд░реНрдЪрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ (props, theme) => {}
рдпрд╛ (theme, props) => {}
рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ props
рдФрд░ theme
рдирд╛рдорд┐рдд рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ @pelotom рдиреЗ рдЬреЛ рдХрд╣рд╛, рдЙрд╕реЗ рд╕реБрджреГрдврд╝ рдХрд░рдирд╛
рдзреИрд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж! #13503 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдШрдЯрдХ рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдордиреЗ рд╣реБрдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рднреА рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ: https://twitter.com/olivtassinari/status/1058805751404261376ред
рдХреНрдпрд╛ рдЗрд╕рдиреЗ рдЗрд╕реЗ 4.0 рдореЗрдВ рдмрдирд╛рдпрд╛? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ makeStyles
рдХреЙрд▓рдмреИрдХ рдореЗрдВ props
рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИред
@ рд╢рд╣рд░41 const classes = useStyles(props);
рдЕрдЪреНрдЫрд╛ рдРрд╕рд╛ рд╣реИред рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ
const useStyles = makeStyles(theme => {
return {
foo: {
color: theme.props.danger ? '#ff0000' : '#00ff00'
}
};
});
function MyComponent(props) {
const classes = useStyles(props);
return <div className={classes.foo}>...</div>;
}
рдореБрдЭреЗ рдпрд╣ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╕реНрдЯрд╛рдЗрд▓ рдПрдкреАрдЖрдИ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рджреЗрдЦрдиреЗ рджреЛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдкреАрдЖрд░ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реВрдВред
@city41 https://material-ui.com/styles/basics/#adapting -based -on-
рдмрдврд╝рд┐рдпрд╛, рдпрд╣ рджреЗрдЦрдХрд░ рдЦреБрд╢реА рд╣реБрдИ рдХрд┐ рдбреЙрдХреНрд╕ рдЕрдкрдбреЗрдЯ рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдШрдЯрдХ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереАрдо рдФрд░ рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛
import React from 'react';
import { Button, Theme, makeStyles } from '@material-ui/core';
interface ButtonProps {
destructive: boolean;
}
const useButtonStyles = makeStyles<Theme, ButtonProps>(theme => {
return {
root: props => ({
backgroundColor: props.destructive ? theme.palette.error.main : theme.palette.primary.main
})
};
});
export const PrimaryButton: React.FunctionComponent<ButtonProps> = props => {
const classes = useButtonStyles(props);
return <Button {...props} className={classes.root} variant="contained" />;
};
рдореИрдВ рдмрд╛рд╣рд░реА рд╢реИрд▓рд┐рдпреЛрдВ рдЬреЗрд╕рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░реЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╛рд╣рд░реА рдлрд╝рд╛рдЗрд▓ рд╣реИ
const typographyStyle = {
title2: {
fontFamily:"Montserrat",
fontStyle:"normal",
fontWeight:"800",
fontSize:"72px",
lineHeight:"88px",
letterSpacing:"-0.02em",
// color:"#304C82"
color : props => {
console.log(props,'c1');
return props.color
}
}
};
export default typographyStyle;
рдореИрдВ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реВрдБ рдФрд░ рд╡рд╕реНрддреБ рдХреЛ рдлреИрд▓рд╛рддрд╛ рд╣реВрдБ
import typographyStyle from "../assets/jss/material-kit-pro-react/views/componentsSections/typographyStyle";
const styles = theme => ({
...typographyStyle,
homeSearch:{
width: '100%',
'& div':{
'& input':{
"color":"#304C82",
height: 65,
fontFamily: 'Open Sans',
fontStyle: 'normal',
fontWeight: 800,
fontSize: '48px',
lineHeight: '65px',
letterSpacing: '-0.03em',
'&::placeholder':{
fontFamily: 'Open Sans',
fontStyle: 'normal',
fontWeight: 800,
fontSize: '48px',
lineHeight: '65px',
letterSpacing: '-0.03em',
color: '#EAEAEA'
}
}
}
},
});
рдЕрдм рдХрд▓рд░ рдлрдВрдХреНрд╢рди рдкрд░ рдореБрдЭреЗ рдкреНрд░реЙрдкреНрд╕ = {} рдорд┐рд▓рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЕрдкрдиреА рдореБрдЦреНрдп рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рднреА рдЦрд╛рд▓реА рд╡рд╕реНрддреБ рдорд┐рд▓ рд░рд╣реА рд╣реИред рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓
homeSearch: props => {
console.log(props);
return {
width: '100%',
border: `1px solid ${props.color}`
,
'& div':{
'& input':{
"color":"#304C82",
height: 65,
fontFamily: 'Open Sans',
fontStyle: 'normal',
fontWeight: 800,
fontSize: '48px',
lineHeight: '65px',
letterSpacing: '-0.03em',
'&::placeholder':{
fontFamily: 'Open Sans',
fontStyle: 'normal',
fontWeight: 800,
fontSize: '48px',
lineHeight: '65px',
letterSpacing: '-0.03em',
color: '#EAEAEA'
}
}
}
}
},
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ v1.x рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдореЗрдВ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВред рдХрд╛рдлреА рд▓реЛрдЧ рдЗрд╕рдХреА рдорд╛рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рдЬрд▓реНрдж рд╣реА рдЙрд╕ рддрдХ рдкрд╣реБрдВрдЪреЗрдВрдЧреЗред