TypeScript Academy · Pelajaran

Jenis Suspense dan sempadan ralat

Gunakan React.Suspense dengan komponen lazy dan taipkan Error Boundaries yang kukuh (berasaskan kelas). Kendalikan ralat unknown dengan selamat dan sediakan corak tetapan semula.

Pelajaran 2 daripada 28 langkah

Jenis Suspense dan sempadan ralat ialah pelajaran TypeScript Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 2. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran TypeScript Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus TypeScript Academy merangkumi sejumlah 2 pelajaran.

Pengenalan

Matlamat: Muatkan komponen secara malas dengan React.lazy + Suspense, dan tambahkan Sempadan Ralat bertaip yang memaparkan sandaran mesra pengguna serta merekodkan butiran.

  • Suspense = UI pemuatan
  • Sempadan Ralat = UI ralat masa jalan
  • Taip ralat unknown dengan selamat

Lazy + Suspense

React.lazy mengembalikan jenis komponen. Balutnya dalam Suspense untuk memaparkan sandaran semasa modulnya sedang dimuatkan.

import React, { Suspense } from "react"

const LazyWidget = React.lazy(async () => import("./Widget"))

export default function App() {
  return (
    <div style={{ display: "grid", gap: 8 }}>
      <Suspense fallback={<span>Loading…</span>}>
        <LazyWidget />
      </Suspense>
    </div>
  )
}

Penaipan props Lazy

Props dibuat secara inferens daripada eksport lalai modul yang diimport. Tapak panggilan kekal bertaip sepenuhnya.

import React, { Suspense } from "react"

// Ensure props are preserved through lazy
interface ChartProps { title: string; values: number[] }
const Chart = React.lazy(async () => import("./Chart"))

export default function App() {
  return (
    <Suspense fallback={<span>Loading chart…</span>}>
      <Chart title="Sales" values={[10, 20, 15]} />
    </Suspense>
  )
}

Penaipan ErrorBoundary

Taip pengendali ralat dengan unknown dan kecilkan kepada Error jika perlu. Gunakan React.ErrorInfo untuk mengakses tindanan komponen.

import React from "react"

interface Props { fallback: React.ReactNode }
interface State { hasError: boolean; message?: string }

export class ErrorBoundary extends React.Component<Props, State> {
  state: State = { hasError: false }

  static getDerivedStateFromError(err: unknown): State {
    const msg = err instanceof Error ? err.message : String(err)
    return { hasError: true, message: msg }
  }

  componentDidCatch(error: unknown, info: React.ErrorInfo) {
    // log error & component stack safely
    console.error("ErrorBoundary", error, info.componentStack)
  }

  render() {
    if (this.state.hasError) {
      return this.props.fallback || <span>Something went wrong</span>
    }
    return this.props.children
  }
}

Gubah sempadan

Gabungkan Suspense (pemuatan) dan Sempadan Ralat (ralat). Kedua-duanya menangani perkara yang berbeza dan boleh disarangkan mengikut bahagian.

import React, { Suspense } from "react"
import { ErrorBoundary } from "./ErrorBoundary"

const Page = React.lazy(async () => import("./Page"))

export default function App() {
  return (
    <div style={{ display: "grid", gap: 8 }}>
      <ErrorBoundary fallback={<span>Failed to load page</span>}>
        <Suspense fallback={<span>Loading page…</span>}>
          <Page />
        </Suspense>
      </ErrorBoundary>
    </div>
  )
}

Corak penetapan semula

Petua penetapan semula:

  • Tetapkan semula ErrorBoundary dengan mengubah kuncinya.
  • Sediakan butang “Cuba lagi” untuk mengambil semula data atau memasang semula komponen.
  • Kekalkan sandaran supaya ringkas dan mudah diakses.

Semakan penaipan sempadan

Semakan pantas: Bagaimanakah anda menangkap ralat semasa pemaparan dengan sandaran bertaip?

Ringkasan

Ringkasan: Suspense mengendalikan pemuatan; Sempadan Ralat mengendalikan ralat. Berikan jenis kepada ralat unknown dengan teliti dan sediakan strategi penetapan semula.

Percuma untuk bermula

Pelajari TypeScript dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
101
Pelajaran
352

Soalan Lazim

Adakah pelajaran “Jenis Suspense dan sempadan ralat” percuma?

Ya — teks penuh “Jenis Suspense dan sempadan ralat” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus TypeScript Academy, tingkat taraf kepada CoddyKit PRO. Kursus TypeScript Academy merangkumi sejumlah 2 pelajaran.

Apakah yang akan saya pelajari dalam “Jenis Suspense dan sempadan ralat”?

Gunakan React.Suspense dengan komponen lazy dan taipkan Error Boundaries yang kukuh (berasaskan kelas). Kendalikan ralat unknown dengan selamat dan sediakan corak tetapan semula. Anda berlatih TypeScript Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan TypeScript Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran TypeScript Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 2.

Berapa lamakah pelajaran “Jenis Suspense dan sempadan ralat” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran TypeScript Academy ini?

Ya. Setiap pelajaran TypeScript Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Cangkuk tersuai dengan generik dan inferens
  2. Jenis Suspense dan sempadan ralat
← Kembali ke TypeScript Academy