Material-ui: @ material-ui / styles: Penggunaan dalam Komponen Kelas?

Dibuat pada 24 Mei 2019  ·  17Komentar  ·  Sumber: mui-org/material-ui

Bagaimana seseorang menggunakan makeStyles API di dalam komponen kelas? Dokumentasi hanya menunjukkan contoh untuk komponen fungsi.

Ketika saya mencoba menggunakan ini dalam metode komponen kelas render , saya mendapatkan kesalahan berikut:

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.
docs question

Komentar yang paling membantu

saya menggunakan withStyles alih-alih makeStyle seperti ini ...

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);

Semua 17 komentar

Anda tidak dapat menggunakan kait di dalam komponen kelas. Anda membutuhkan komponen functionnal atau menggunakan urutan yang lebih tinggi ( withStyles ).

Saya tutup, jika kami melihat laporan serupa, saya pikir kami harus mendokumentasikannya.

@oliviertassinari : Tetapi jika aplikasi dideklarasikan sebagai kelas bagaimana cara melakukannya?
Karena dalam aplikasi saya memiliki status dan fungsi lainnya.

@ Angelk90 Anda harus menggunakan API komponen tingkat tinggi: https://github.com/mui-org/material-ui/issues/15820#issuecomment -495480040 ( withStyles ).

Menurut dokumentasi Anda, contoh penggunaan withStyles api masih merupakan komponen fungsi.

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

Itulah mengapa saya menolak jawaban Anda.

@oliviantri
Bagaimana saya bisa menggunakan makeStyles dengan HOC?
Sesuai kasus penggunaan saya, saya memerlukan objek tema material dalam gaya.

Seperti yang disarankan oleh @ ghosh-jaideep,
bagaimana memiliki kemungkinan untuk menggunakan utilitas tema seperti:

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

di dalam komponen kelas?
Terima kasih

saya menggunakan withStyles alih-alih makeStyle seperti ini ...

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 Bagaimana LoginComponent dirender dari komponen induk?

  • Apakah Anda melewatkan tema sebagai properti?
  • Apakah Anda menggunakan ThemeProvider dalam komponen induk?

Akan lebih berguna jika Anda membagikan cuplikan kode dari komponen induk.

Saya melakukan hal yang sama dengan @ Ess-Soft dan menambahkan widthTheme sebelum withStyles
withTheme(withStyles(useStyles)(LoginComponent ))

maka Anda dapat menggunakan theme bahkan di dalam render

Adakah yang bisa menjelaskan hal dengan gaya. Sejujurnya saya dapat mengatakan ketika saya melihat hal-hal seperti ini saya pikir lol ayolah, Angular jauh lebih normal. 3 jam hari ini mencari dan mencari jawaban dan kemudian saya menemukan ini.

@ xtianus79 API ini juga bekerja dengan komponen kelas: https://material-ui.com/styles/basics/#higher -order-component-api.

@oliviertassinari dapatkah Anda menunjukkan contoh yang berarti dengan grid? lol itulah yang saya coba lakukan dan saya terjebak di sana. Saya menggunakan makeStyles dan createStyles dan saya tidak tahu bagaimana melakukannya tanpa fungsi? Bisakah Anda membantu dengan itu.

@ xtianus79 Anda akan menemukan bantuan lebih lanjut di StackOverflow

@oliviertassinari untuk masalah khusus dan kasus penggunaan itu Saya tidak melihatnya.

Ummm. bahkan masih https://material-ui.com/styles/basics/#higher -order-component-api tidak menjawab bagaimana cara menggunakan 'theme'? mengapa hanya mendukung komponen fungsional dengan Hooks? orang memiliki kode warisan atau kebutuhan untuk komponen berbasis kelas.

@DewangS See the withTheme() API: https://material-ui.com/styles/api/#withtheme-component-component.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat