Material-ui: @ рд╕рд╛рдордЧреНрд░реА-рдЙрдИ / рд╢реИрд▓рд┐рдпрд╛рдБ: рдХрдХреНрд╖рд╛ рдШрдЯрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 24 рдордИ 2019  ┬╖  17рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mui-org/material-ui

рд╡рд░реНрдЧ рдШрдЯрдХ рдХреЗ рднреАрддрд░ makeStyles API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ? рдкреНрд░рд▓реЗрдЦрди рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рдЬрдм рдореИрдВ рдПрдХ рдХрдХреНрд╖рд╛ рдШрдЯрдХ рдХреЗ render рдкрджреНрдзрддрд┐ рдХреЗ рднреАрддрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ withStyles рдХреЗ рдмрдЬрд╛рдп makeStyle рдЗрд╕ рддрд░рд╣ ...

import React from 'react';
import { withStyles } from '@material-ui/core/styles';

const styles = (theme) => ({
  fab: {
    position: 'fixed',
    bottom: theme.spacing(2),
    right: theme.spacing(2),
  },
});

class LoginComponent extends React?Component {
  render() {
    const { classes } = this.props;
    /** your UI components... */
  }
}

export default withStyles(syles)(LoginComponent);

рд╕рднреА 17 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЖрдк рдХрд┐рд╕реА рд╡рд░реНрдЧ рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЖрдкрдХреЛ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдЙрдЪреНрдЪ рдХреНрд░рдо ( withStyles ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдореИрдВ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ рд╣рдо рдЗрд╕реА рддрд░рд╣ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

@oliviertassinari : рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдРрдк рдХреЛ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░реВрдБ?
рдХреНрдпреЛрдВрдХрд┐ рдРрдк рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд░рд╛рдЬреНрдп рдФрд░ рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВред

@ Angelk90 рдЖрдкрдХреЛ рдЙрдЪреНрдЪ рдХреНрд░рдо рдХреЗ рдШрдЯрдХ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: https://github.com/mui-org/material-ui/issues/15820#issuecomment -495480040 ( withStyles )ред

рдЖрдкрдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрдиреБрд╕рд╛рд░, withStyles рдПрдкреАрдЖрдИ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг рдЕрднреА рднреА рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдШрдЯрдХ рд╣реИред

https://material-ui.com/styles/basics/

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЛ рдЧрд▓рдд рдмрддрд╛рдпрд╛ред

@oliviertassinari
рдореИрдВ рдПрдЪрдУрд╕реА рдХреЗ рд╕рд╛рде рдореЗрдХрд╕рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореБрдЭреЗ рд╢реИрд▓реА рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рд╡рд┐рд╖рдп рд╡рд╕реНрддреБ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ @ рдШреЛрд╖-рдЬрдпрджреАрдк рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ,
рдХреИрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╖рдп рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ:

[theme.breakpoints.up("md")]: {
          paddingLeft: theme.spacing(2),
          paddingTop: theme.spacing(2)
}

рдПрдХ рд╡рд░реНрдЧ рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░?
рдзрдиреНрдпрд╡рд╛рдж

рдореИрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ withStyles рдХреЗ рдмрдЬрд╛рдп makeStyle рдЗрд╕ рддрд░рд╣ ...

import React from 'react';
import { withStyles } from '@material-ui/core/styles';

const styles = (theme) => ({
  fab: {
    position: 'fixed',
    bottom: theme.spacing(2),
    right: theme.spacing(2),
  },
});

class LoginComponent extends React?Component {
  render() {
    const { classes } = this.props;
    /** your UI components... */
  }
}

export default withStyles(syles)(LoginComponent);

@ Ess-Soft рдХреИрд╕реЗ рдореВрд▓ рдШрдЯрдХреЛрдВ рд╕реЗ LoginComponent рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

  • рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкреНрд░рд╕рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╖рдп рдкрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ?
  • рдХреНрдпрд╛ рдЖрдкрдиреЗ рдореВрд▓ рдШрдЯрдХ рдореЗрдВ ThemeProvider рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛?

рдпрджрд┐ рдЖрдк рдореВрд▓ рдШрдЯрдХ рдХрд╛ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдореИрдВрдиреЗ @ Ess-Soft рдХреЗ рд╕рдорд╛рди рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ withStyles рд╕реЗ рдкрд╣рд▓реЗ widthTheme рдХреЛ рдЬреЛрдбрд╝рд╛
withTheme(withStyles(useStyles)(LoginComponent ))

рддреЛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ theme рднреА рдЕрдВрджрд░ render

рдХрд┐рд╕реА рдХреЛ рд╢реИрд▓рд┐рдпреЛрдВ рдмрд╛рдд рдХреЗ рд╕рд╛рде рд╕рдордЭрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЬрдм рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рди рджреЗрдЦрддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрджрдореА рдкрд░ рдЖрдирд╛ рд▓рд╛рдЬрд┐рдореА рд╣реИ рдПрдВрдЧреБрд▓рд░ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред 3 рдШрдВрдЯреЗ рдЖрдЬ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЬрд╡рд╛рдм рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИред

@ xtianus79 рдпрд╣ рдПрдкреАрдЖрдИ рд╡рд░реНрдЧ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: https://material-ui.com/styles/basics/#higher -order-Components -apiред

@oliviertassinari рдХреНрдпрд╛ рдЖрдк рдЧреНрд░рд┐рдб рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдпреЛрдЧреНрдп рд╣реИ рдЬреЛ рдореИрдВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рд╡рд╣реАрдВ рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдВред рдореИрдВ MakeStyles рдФрд░ createStyles рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдмрд┐рдирд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

@ xtianus79 рдЖрдкрдХреЛ StackOverflow рдкрд░ рдЕрдзрд┐рдХ рдорджрдж рдорд┐рд▓реЗрдЧреА

рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рдореБрджреНрджреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП @oliviertassinari рдореИрдВ рдЗрд╕реЗ рдирд╣реАрдВ рджреЗрдЦрддрд╛ред

Ummmред рдЕрднреА рднреА https://material-ui.com/styles/basics/#higher -order-Components-api 'рдереАрдо' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ? рдХреЗрд╡рд▓ рд╣реБрдХ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИ? рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рд╡рд┐рд░рд╛рд╕рдд рдХреЛрдб рдпрд╛ рд╡рд░реНрдЧ рдЖрдзрд╛рд░рд┐рдд рдШрдЯрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@DewangS withTheme() API рджреЗрдЦреЗрдВ: https://material-ui.com/styles/api/#withtheme -component- рдШрдЯрдХред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕