ΣΗΜΕΙΩΣΗ: Αυτό το σεμινάριο είναι σχετικό με προγραμματιστές που χρησιμοποιούν μια προσέγγιση στυλ CSS-in-JS, π.χ. Emotion.js, Material UI, κ.λπ.
Βήμα 1: Χρησιμοποιήστε το άτομο ανάκρουσης για το όνομα του τρέχοντος επιλεγμένου θέματος
import { PaletteMode } from "@mui/material";
import { atom } from "recoil"; export const ThemeName = atom<PaletteMode>({ key: "ThemeName", effects: []
});
Βήμα 2: Χρησιμοποιήστε τον επιλογέα ανάκρουσης για το τρέχον επιλεγμένο αντικείμενο θέματος
import { createTheme } from "@mui/material";
import { selector } from "recoil"; export const Theme = selector({ key: "Theme", dangerouslyAllowMutability: true, get(ctx) { const name = ctx.get(ThemeName); return createTheme(); },
});
Βήμα 3: Προσθήκη useTheme()
, useToggleTheme()
Αντιδράστε τα άγκιστρα
import { useRecoilValue, useRecoilCallback } from "recoil"; export function useTheme() { return useRecoilValue(Theme);
} export function useToggleTheme() { return useRecoilCallback( (ctx) => () => { ctx.set(ThemeName, (prev) => (prev === "dark" ? "light" : "dark")); }, [] );
}
Βήμα 4: Αποθήκευση/επαναφορά του τρέχοντος επιλεγμένου ονόματος θέματος σε/από localStorage
export const ThemeName = atom<PaletteMode>({ key: "ThemeName", effects: [ (ctx) => { const storageKey = "theme"; if (ctx.trigger === "get") { const name: PaletteMode = localStorage?.getItem(storageKey) === "dark" ? "dark" : localStorage?.getItem(storageKey) === "light" ? "light" : matchMedia?.("(prefers-color-scheme: dark)").matches ? "dark" : "light"; ctx.setSelf(name); } ctx.onSet((value) => { localStorage?.setItem(storageKey, value); }); }, ],
});
Βήμα 5: Προσθήκη ThemeProvider
στο στοιχείο React ανώτατου επιπέδου
import { ThemeProvider } from "@mui/material";
import { useTheme } from "../theme/index.js"; function App(): JSX.Element { const theme = useTheme(); return ( <ThemeProvider theme={theme}> {/* ... */} </Theme> );
}
Βλέπω app/theme/index.ts
in React Starter Kit
Υποστηρικτικό υλικό
- SEO Powered Content & PR Distribution. Ενισχύστε σήμερα.
- Platoblockchain. Web3 Metaverse Intelligence. Ενισχύθηκε η γνώση. Πρόσβαση εδώ.
- πηγή: https://www.codementor.io/koistya/how-to-implement-ui-theme-switching-dark-mode-with-react-and-recoil-1vvjynmi1e
- 1
- 9
- a
- και
- πλησιάζω
- άτομο
- Τη στιγμή
- σκοτάδι
- προγραμματιστές
- αποτελέσματα
- κ.λπ.
- Αιθέρας (ΕΤΗ)
- από
- λειτουργία
- παίρνω
- Πως
- Πώς να
- HTTPS
- εφαρμογή
- εισαγωγή
- in
- Κλειδί
- φως
- υλικό
- Ui υλικού
- Τρόπος
- όνομα
- Πλάτων
- Πληροφορία δεδομένων Plato
- Πλάτωνα δεδομένα
- Αντίδραση
- Ανάκρουση
- Υποστηρικτικό υλικό
- απόδοση
- επιλέγονται
- Βήμα
- Η
- θέμα
- προς την
- κορυφαίο επίπεδο
- ενεργοποιούν
- φροντιστήριο
- ui
- χρήση
- αξία
- zephyrnet
Περισσότερα από Codementor React Fact
Κίνηση σελίδας React χρησιμοποιώντας το react-spring
Κόμβος πηγής: 1781489
Σφραγίδα ώρας: 2 Αυγούστου 2022
Η δύναμη της καθοδήγησης: Γιατί η ύπαρξη ενός μέντορα είναι απαραίτητη για την επαγγελματική ανάπτυξη | Κωδικοποιητής
Κόμβος πηγής: 2145514
Σφραγίδα ώρας: 22 Ιουνίου 2023
Γιατί δεν πρέπει να χρησιμοποιούμε στο React JS
Κόμβος πηγής: 2035537
Σφραγίδα ώρας: 27 Μαρτίου, 2023
Συνέντευξη Μηχανικού Προσωπικού: Πλοήγηση στο μονοπάτι προς την τεχνική ηγεσία | Κωδικοποιητής
Κόμβος πηγής: 2144447
Σφραγίδα ώρας: 22 Ιουνίου 2023
Φοιτητής πληροφορικής που ξεμπλοκάρει το έργο του με το Chat GPT
Κόμβος πηγής: 2001450
Σφραγίδα ώρας: 9 Μαρτίου, 2023
Σύγκριση React VS HTMX: Επιλογή της σωστής προσέγγισης Frontend | Κωδικοποιητής
Κόμβος πηγής: 2144445
Σφραγίδα ώρας: 22 Ιουνίου 2023
Αναζητήστε και φιλτράρετε δεδομένα χρησιμοποιώντας React Hooks και ένα ακέφαλο CMS
Κόμβος πηγής: 1780725
Σφραγίδα ώρας: 4 Αυγούστου 2022
Άγκιστρα στο React JS και γιατί τα χρειαζόμαστε;
Κόμβος πηγής: 2041290
Σφραγίδα ώρας: 30 Μαρτίου, 2023
Αποτελεσματικές Τεχνικές Βελτιστοποίησης Απόδοσης για Ανάπτυξη Frontend | Κωδικοποιητής
Κόμβος πηγής: 2125812
Σφραγίδα ώρας: 8 Ιουνίου 2023
Συνομιλία με οδηγό πρακτικής άσκησης GPT Πλήρης στοίβα: Nest, React, Typescript
Κόμβος πηγής: 1996513
Σφραγίδα ώρας: 6 Μαρτίου, 2023