Markieren Sie Daten im MUI StaticDatePicker-Kalender
P粉513316221
2023-08-30 17:38:38
<p>Ich versuche, MUI StaticDatePicker auf meiner React-Website zu implementieren. Ich möchte die Tage im Kalender mit einem blauen Kreis oder Abzeichen hervorheben. Ich habe verschiedene Möglichkeiten ausprobiert, dies zu erreichen, aber ich kann die Ausgabe des hervorgehobenen Datums im Kalender nicht erhalten. Wenn jemand weiß, wie das geht, helfen Sie mir bitte. Im folgenden Code versuche ich, den Statuswert „highlightDays“ im Kalender hervorzuheben. </p>
<p>Ich verwende die DayJS-Bibliothek, um zeit- und datumsbezogene Daten auf meiner Website zu verarbeiten. Aber aus irgendeinem Grund kann ich meinen renderDay nicht laufen sehen. Was ich schließlich erreichen möchte, ist, Termine vor dem heutigen Tag, also Termine vor dem aktuellen Datum, zu blockieren und bevorstehende Veranstaltungstermine im Kalender hervorzuheben.</p>
<pre class="brush:php;toolbar:false;">import { React, useState } from "react";
Dayjs aus „Dayjs“ importieren;
import { Box, TextField } from "@mui/material";
import { Loading } from "../pages/index.mjs";
import { EventCard } from "./index.mjs";
import { AdapterDayjs } aus "@mui/x-date-pickers/AdapterDayjs";
import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
import { StaticDatePicker } aus "@mui/x-date-pickers/StaticDatePicker";
import { useReadAllEvent } from "../hooks/useEvent.mjs";
import { PickersDay } von "@mui/x-date-pickers";
import { Badge } from "@mui/material";
const SessionBooking = ({ doctor }) => {
const [value, setValue] = useState("");
const [highlightDays, setHighlightDays] = useState([
„01.06.2023“,
„02.06.2023“,
„04.06.2023“,
]);
console.log(Wert);
const { data: eventSet, isLoading } = useReadAllEvent({
onSuccess: (Nachricht) => {},
onError: (Nachricht) => {},
session: { id: doctor, today: dayjs().format("YYYY-MM-DD") },
});
if (isLoading) return <Loading />;
console.log(eventSet);
const events = eventSet.map(
({ key, countPatient, start, end, maxPatients }) => (
<EventCard
key={key}
gestartet={start}
beendet={end}
patienten={countPatient}
max={maxPatienten}
/>
)
);
zurückkehren (
<Box
mt={2}
sx={{
Anzeige: „Gitter“,
GridTemplateColumns: {
xs: "repeat(1, 1fr)",
sm: "repeat(1, 1fr)",
md: "repeat(2, 1fr)",
},
Lücke: 1,
}}
>
<Box>
<LocalizationProvider dateAdapter={AdapterDayjs}>
<StaticDatePicker
Orientierung="Hochformat"
openTo="Tag"
Wert={Wert}
onChange={(newValue) => {
setValue(newValue);
}}
renderInput={(params) => <TextField {...params} />}
renderDay={(day, _value, DayComponentProps) => {
const isSelected =
!DayComponentProps.outsideCurrentMonth &&
highlightDays.includes(dayjs(day).format("YYYY-MM-DD"));
zurückkehren (
<Abzeichen
key={day.toString()}
overlap="circular"
BadgeContent={isSelected ? "-" : nicht definiert}color="primär"
>
<PickersDay {...DayComponentProps} />
</Badge>
);
}}
/>
</LocalizationProvider>
</Box>
<Box>{events}</Box>
</Box>
);
};
Standard-SessionBooking exportieren;</pre>
<pre class="brush:php;toolbar:false;"></pre></p>
就像 steve 所说的
在新版本中不接受 renderDay 属性。相反必须使用插槽。 StaticDatePicker 的代码