reactjs - خطای TypeScript - مشخصه component در React mui MenuItem وجود ندارد


من از react mui MenuItem استفاده میکنم و نیاز دارم یک آیتم منو را به عنوان لینک بسازم. من سعی کردهام که این کار را به این شکل انجام دهم:

        <MenuItem
          component={<Link href={`/backend/api/exam/${row.id}/result`} />}
          className={classes.menuItem}
          onClick={() => handleClose()}>
          Result
        </MenuItem>

اما وقتی این کار را انجام میدهم، یک خطا رخ میدهد که میگوید ویژگی component در MenuItem وجود ندارد:

ویژگی 'component' در نوع 'IntrinsicAttributes & { action?: ((instance: ButtonBaseActions | null) => void) | RefObject | null | undefined; buttonRef?: ((instance: unknown) => void) | RefObject | null | undefined; ... 7 مورد دیگر ...; TouchRippleProps?: Partial<...> | undefined; } & { ...; } & { ...; } & CommonProps<...>...' وجود ندارد. TS2322

من اینجا چه کار اشتباهی انجام میدهم، چرا این خطا را دریافت میکنم؟

پاسخ شماره ۱

مستندات:

نوع: elementType

توضیحات: یا یک رشته برای استفاده از یک عنصر DOM یا یک کامپوننت.

استفاده از یک کامپوننت بهعنوان React.Node کار نمیکند.

خصوصیت component انتظار دارد موارد زیر را دریافت کند: React.Element<typeof Component>.

در مورد شما، ارائهٔ کامپوننت به صورت typeof جواب خواهد داد:

import { Link } from 'react-router-dom';
....

<MenuItem
  component={Link}
  to={`/backend/api/exam/${row.id}/result`}
  className={classes.menuItem}
  onClick={() => handleClose()}>
  Result
</MenuItem>

راه حل دیگری میتواند این باشد که <MenuItem> خود را داخل یک <Link> قرار دهید:

<Link to={`/backend/api/exam/${row.id}/result`}>
  <MenuItem
    className={classes.menuItem}
    onClick={() => handleClose()}>
  >
    Result
  </MenuItem>
</Link>